Вопрос
У меня есть код,
System.Web.Mail.MailMessage oMailMessage = new MailMessage();
oMailMessage.From = strFromEmaild;
oMailMessage.To = strToEmailId;
oMailMessage.Subject = strSubject;
oMailMessage.Body = strBody;
SmtpMail.SmtpServer = "localhost";
SmtpMail.Send(oMailMessage);
(все переменные имеют значения)
Я установил виртуальные службы SMTP.почему он не может отправлять электронные письма.почему не работает??
РЕДАКТИРОВАТЬ
public bool SendMail(string strToEmailId, string strFromEmaild, string strSubject, string strBody)
{
try
{
System.Web.Mail.MailMessage oMailMessage = new MailMessage();
oMailMessage.From = strFromEmaild;
oMailMessage.To = strToEmailId;
oMailMessage.Subject = strSubject;
oMailMessage.Body = strBody;
SmtpMail.SmtpServer = "SERVERNAME";
SmtpMail.Send(oMailMessage);
return true;
}
catch (Exception ex)
{
return false;
}
}
У меня есть этот код.Он работает нормально и возвращает true, но я не получаю никаких писем во входящих.
Что еще может быть не так?
Получение некоторых писем в каталоге BadMail по адресу C:\Inetpub\mailroot\Badmail, а также в каталоге очереди, получение некоторых писем здесь...что это значит..??
Я обнаружил, что почту можно отправлять только на учетные записи Gmail...почему это так?
Решение
Определите, в чем заключается ошибка:
try
{
SmtpMail.Send(oMailMessage);
}
catch (Exception ex)
{
//breakpoint here to determine what the error is:
Console.WriteLine(ex.Message);
}
Отсюда отредактируйте свой вопрос, указав сведения об исключении.
Другие советы
Как уже упоминалось другими, с вашим кодом все в порядке, и, скорее всего, это что-то в вашей конфигурации SMTP или, возможно, ваш почтовый клиент, которому вы отправляете тестовые электронные письма, помечает их как спам.Если это спам, то это достаточно легко выяснить.Если что-то связано с электронной почтой, вы можете перейти в корневую папку своей почты, и там будет несколько папок с файлами электронной почты и описанием.Посмотрите, есть ли что-нибудь в папке BadMail или папке очереди, откройте их в блокноте и посмотрите, какая ошибка выдается, почему они не были отправлены.
Трудно сказать, но одна из возможностей заключается в том, что вы не включили анонимный доступ к виртуальному SMTP-серверу.Перейдите в диалог свойств виртуального сервера, выберите вкладку «Доступ», нажмите кнопку «Контроль доступа» и убедитесь, что анонимный доступ включен.
Кажется, что с вашей программой нет ничего функционально неправильного.Вероятно, это проблема конфигурации между вашей программой и почтовым сервером.Я бы попробовал следующее, чтобы диагностировать проблему.
- Оберните код в блок try/catch и посмотрите, содержит ли сообщение об исключении полезные данные.
- Используйте 127.0.0.1 вместо localhost, чтобы исключить что-то сумасшедшее.
- Убедитесь, что ваш SMTP-сервер работает на стандартном порту (я думаю, 25)
Здравствуйте, вы можете следовать следующему коду:
try
{
SmtpClient client = new SmtpClient("smtp.gmail.com", 587);
client.EnableSsl = true;
client.Timeout = 100000;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false;
client.Credentials = new NetworkCredential("your gmail id", "password");
MailMessage msg = new MailMessage();
msg.To.Add(textBoxTo.Text);
msg.From = new MailAddress("your gmail id");
msg.Subject = textBoxSubject.Text;
msg.Body = textBoxMsg.Text;
Attachment data = new Attachment(textBoxAttachment.Text);
msg.Attachments.Add(data);
client.Send(msg);
MessageBox.Show("Successfully Sent Message.");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
вы пробовали 127.0.0.1 вместо Localhost?Также вы проверили, что служба SMTP работает, проверьте это связь для получения подробной информации.
На виртуальном smtp-сервере добавьте ограничения ретрансляции и контроль соединений, чтобы ни одно из внешних подключений не было разрешено.