我正在使用c#从Hotmail帐户发送电子邮件。
这是代码:
var smtpClient = new SmtpClient();
smtpClient.UseDefaultCredentials = false;
smtpClient.Credentials = new NetworkCredential("userName@hotmail.com" , "password");
smtpClient.Host = "smtp.live.com";
smtpClient.Port = 587;
smtpClient.EnableSsl = true;
smtpClient.SendCompleted += SmtpClientSendCompleted;
var mailMessage = new MailMessage("userName@hotmail.com", "me@gmail.com", "The subject", "The body");
try
{
smtpClient.Send(mailMessage);
}
catch (Exception ex)
{
MessageBox.Show(string.Format("An error occur while sending the mail: {0}", ex.Message));
return;
}
MessageBox.Show("Message was sent succesfully\n");
}
此代码在Win8和Win7上运行良好,但在win8.1上失败并抛出以下异常:
System.IO.IOException :无法从传输连接读取数据:远程主机强行关闭现有连接。 ---> System.Net.Sockets.SocketException:远程主机强行关闭现有连接。
在System.Net.Sockets.NetworkStream.Read(Byte []缓冲区,Int32偏移量, Int32尺寸)
另外,如果我将邮件提供商改为gmail.com,它也可以完美运行。
我尝试使用ThunderBird从win8.1上的hotmail帐户发送邮件,但它确实有效。
我的代码有什么问题?
答案 0 :(得分:0)
这可能是Windows 8.1(预览版)的问题。一些用户已在MSDN forum和TechNet forum上报告了此问题。
如果您正在开发ASP.NET应用程序,这可能不是问题,因为您将在尚未安装8.1的环境上运行生产版本。
另一种解决方案是切换到不同的SMTP服务,有些用户报告说Gmail的SMTP工作正常,8.1预览。