前段时间我已经将我的ASP.NET C#项目配置为通过Office 365发送电子邮件,但上周它开始抛出很多例外。
System.IO.IOException: Unable to read data from the transport connection: net_io_connectionclosed.
at System.Net.Mail.SmtpReplyReaderFactory.ProcessRead(Byte[] buffer, Int32 offset, Int32 read, Boolean readLine)
at System.Net.Mail.SmtpReplyReaderFactory.ReadLines(SmtpReplyReader caller, Boolean oneLine)
at System.Net.Mail.SmtpReplyReaderFactory.ReadLine(SmtpReplyReader caller)
at System.Net.Mail.CheckCommand.Send(SmtpConnection conn, String& response)
at System.Net.Mail.SmtpTransport.SendMail(MailAddress sender, MailAddressCollection recipients, String deliveryNotify, Boolean allowUnicode, SmtpFailedRecipientException& exception)
at System.Net.Mail.SmtpClient.Send(MailMessage message)
如何防止这种情况发生?
MailMessage message = new MailMessage(System.Configuration.ConfigurationManager.AppSettings["smtpfrom"], email, strOnderwerp, strBody);
message.Priority = MailPriority.Normal;
message.IsBodyHtml = true;
SmtpClient client = new SmtpClient(System.Configuration.ConfigurationManager.AppSettings["smtpserver"], Convert.ToInt32((System.Configuration.ConfigurationManager.AppSettings["smtpport"])));
client.EnableSsl = Boolean.Parse(System.Configuration.ConfigurationManager.AppSettings["smtpssl"]); ;
client.Credentials = new System.Net.NetworkCredential(System.Configuration.ConfigurationManager.AppSettings["smtpuser"], System.Configuration.ConfigurationManager.AppSettings["smtppass"]);
client.Send(message);
client.Dispose();
似乎在 Dispose 上抛出异常。
答案 0 :(得分:5)
同样的问题于2月8日在我的公司开始。问题会随之而来,没有模式。
我认为解决问题的方法是更改SMTP服务器地址。
我们原始的SMTP服务器地址是podxxxxx.outlook.com,大部分时间仍然有效。我在门户网站上检查了当前的O365 SMTP服务器地址,它应该是smtp.office365.com。
我将配置更改为指向此新地址,问题似乎已消失。我的日志显示更改后的最后24小时内没有错误。
如果错误再次发生,我会更新。