这里是我的代码

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和一段时间后,他们其余的人得到交付。我必须检查所有那些错误的电子邮件具有有效电子邮件地址。不知道是什么的问题。我真的需要在这方面的帮助。

编辑:这是我的异常跟踪

错失发送邮件。;内 前系统。IO.IOException:无法 从中读取数据的运输 连接:net_io_connectionclosed.在 系统。网。邮件。SmtpReplyReaderFactory.ProcessRead(Byte[] 缓冲区,Int32抵消,Int32读, 布尔readLine)在 系统。网。邮件。SmtpReplyReaderFactory.ReadLines(SmtpReplyReader 呼叫者,布尔oneLine)在 系统。网。邮件。SmtpReplyReaderFactory.ReadLine(SmtpReplyReader 叫)在 系统。网。邮件。CheckCommand.发送(SmtpConnection conn,String和响应)在 系统。网。邮件。MailCommand.发送(SmtpConnection 康涅狄格州、字节[]命令,String)在 系统。网。邮件。SmtpTransport.SendMail(邮件地址 发件人、MailAddressCollection 收件人串deliveryNotify, SmtpFailedRecipientException& 例外)

有帮助吗?

解决方案 3

显然这个问题得到了只是我的第三方SMTP服务器上增加队列的大小来解决。 但聂的回答听起来就像是相当有用的太

其他提示

以及,"未发送电子邮件"应该希望有一个更为详细的说明。但有几件事情,可能导致这一点。

  1. 限制"从"地址。如果您使用的是不同的地址,有些可能会阻止你的SMTP服务能够送。
  2. 防洪上SMTP服务可能是停止该电子邮件出去。

无论如何,如果它是这样一个或另一个错误,你会想看看的例外和内部异常得到更为详细的说明。

我发送大量电子邮件时经历了同样的问题。设置deliveryMethod属性PickupDirectoryFromIis固定对我来说。 也不要创建一个新的SmtpClient每次。

什么错误,你得到的是它SmtpFailedrecipientException?如果是的话,你可以检查innerexceptions列表和查看的StatusCode以获取更多信息。下面的链接有一些很好的信息

MSDN

编辑为新的信息

THISIS从我所看到的找到您的SMTP服务器,尽管你说,这只是发生在一些邮件的问题。您是否使用一个以上的SMTP服务器,如果是的话,也许你可以道问题到一个特别,如果没有则可能是您发送电子邮件的速度/量导致您的SMTP服务器的一些问题。

对于我们来说,一切都很好,电子邮件是非常小的,而不是他们中的很多被发送和sudently它给了这个错误。看来,一个技术员安装的Astaro这是防止电子邮件被发送。而我们得到这个错误所以是错误的是有点神秘,但我希望这可以帮助别人。

看到你的循环发送电子邮件,你只要有唯一的解决办法的错误。结果 声明邮件对象圈外并分配fromaddress出你正在使用发送邮件循环。该fromaddress场得到的循环,是你的问题一次又一次地分配。

五年后(我希望这个开发商是不是仍然在等待一个修复这个..)

我有同样的问题,致相同的错误:我被声明循环内的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();

当Web服务器不能访问邮件服务器可以出现此错误。确保Web服务器可以到达邮件服务器,例如ping来。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top