smtpclient "ошибка отправки почты" - PullRequest
13 голосов
/ 05 февраля 2010

вот мой код

for(int i = 0; i < number ; i++)
{
MailAddress to = new MailAddress(iMail.to);
MailAddress from = new MailAddress(iMail.from, iMail.displayName);
string body = iMail.body;
string subject = iMail.sub;
oMail = new MailMessage(from, to);
oMail.Subject = subject;
oMail.Body = body;
oMail.IsBodyHtml = true;
oMail.Priority = MailPriority.Normal;
oMail.Sender = from;
s = new SmtpClient(smtpServer);
if (s != null)
{
 s.Send(oMail);
}
oMail.Dispose();
s = null;
}

этот цикл отправляет более 60 000 писем. но моя проблема - я получаю «ошибку при отправке почты» в некоторых письмах, иногда 5000, а иногда и меньше, чем остальные. и я должен проверить все эти ошибки, у электронной почты есть действующий адрес электронной почты. не знаю в чем проблема. Мне действительно нужна помощь в этом.

Редактировать: Это мое исключение Trace

Ошибка - ошибка при отправке почты .; внутренний Ex - System.IO.IOException: невозможно читать данные из транспорта соединение: net_io_connectionclosed. в System.Net.Mail.SmtpReplyReaderFactory.ProcessRead (байт [] буфер, смещение Int32, чтение Int32, Boolean readLine) в System.Net.Mail.SmtpReplyReaderFactory.ReadLines (SmtpReplyReader вызывающая сторона, Boolean oneLine) в System.Net.Mail.SmtpReplyReaderFactory.ReadLine (SmtpReplyReader вызывающая сторона) в System.Net.Mail.CheckCommand.Send (SMTPConnection conn, String & response) в System.Net.Mail.MailCommand.Send (SMTPConnection conn, команда Byte [], строка из) в System.Net.Mail.SmtpTransport.SendMail (MailAddress отправитель, MailAddressCollection получатели, String deliveryNotify, SmtpFailedRecipientException & исключение)

Ответы [ 8 ]

9 голосов
/ 05 февраля 2010

Что ж, "ошибка при отправке электронной почты" должна, надеюсь, иметь немного больше деталей. Но есть несколько причин, которые могут вызвать это.

  1. Ограничения на адрес «От». Если вы используете адреса, отличные от адресов, некоторые из них могут быть заблокированы вашей службой SMTP от возможности отправки.
  2. Защита от наводнений в службе SMTP может помешать отправке электронной почты.

Независимо от того, является ли это одной из этих или другой ошибкой, вам нужно рассмотреть исключение и внутреннее исключение, чтобы получить немного больше подробностей.

3 голосов
/ 10 марта 2010

очевидно, что эта проблема была решена только путем увеличения размера очереди на моем стороннем SMTP-сервере. но ответ от Nip звучит так, как будто он слишком полезен

3 голосов
/ 09 февраля 2010

У меня возникла такая же проблема при отправке электронной почты большого объема. Установка свойства deliveryMethod на PickupDirectoryFromIis исправила это для меня. Также не создавайте новый SmtpClient каждый раз.

1 голос
/ 06 октября 2015

Пять лет спустя (я надеюсь, что этот разработчик все еще не ждет исправления этого ..)

У меня была та же проблема, вызванная той же ошибкой: я объявлял SmtpClient внутри цикла.

Исправить несложно - объявить это один раз, вне цикла ...

MailAddress mail = null;
SmtpClient client = new SmtpClient();
client.Port = 25;
client.EnableSsl = false;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = true;
client.Host = smtpAddress;       //  Enter your company's email server here!

for(int i = 0; i < number ; i++)
{
    mail = new MailMessage(iMail.from, iMail.to);
    mail.Subject = iMail.sub;
    mail.Body = iMail.body;
    mail.IsBodyHtml = true;
    mail.Priority = MailPriority.Normal;
    mail.Sender = from;
    client.Send(mail);
}
mail.Dispose();
client.Dispose();
1 голос
/ 08 июня 2012

Просмотр вашего цикла для отправки электронных писем и ошибка, которую вы указали, есть только решение.
Объявите почтовый объект вне цикла и назначьте fromaddress вне цикла, который вы используете для отправки почты. Поле fromaddress снова и снова присваивается в цикле, который является вашей проблемой.

1 голос
/ 25 мая 2012

Для нас все было хорошо, электронные письма очень маленькие, и их отправлено не так много, и это неожиданно привело к этой ошибке. Оказалось, что техник установил ASTARO, который запрещал отправку электронной почты. и мы получили эту ошибку, так что да, ошибка немного загадочная, но я надеюсь, что это может помочь другим.

1 голос
/ 05 февраля 2010

Какую ошибку вы получаете, это SmtpFailedrecipientException? Если это так, вы можете проверить список исключений и просмотреть StatusCode для получения дополнительной информации. ссылка ниже содержит полезную информацию

* MSDN 1004 *

Изменить для новой информации

Это проблема с поиском вашего SMTP-сервера из того, что я вижу, хотя вы говорите, что это происходит только в некоторых электронных письмах. Используете ли вы более одного SMTP-сервера, и, если это так, возможно, вы можете отследить проблему до одного, в частности, если нет, то это может быть связано с тем, что скорость / количество отправляемых вами электронных писем вызывает проблемы с вашим SMTP-сервером.

0 голосов
/ 18 февраля 2014

Эта ошибка может появиться, когда веб-сервер не может получить доступ к почтовому серверу. Убедитесь, что веб-сервер может связаться с почтовым сервером, например, пропинговать его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...