我很想使用 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(字节 [] 缓冲区,Int32 偏移量,Int32 大小)
此外,如果我将邮件提供商更改为 gmail.com,它也可以正常工作。
我尝试使用 ThunderBird 从 win8.1 上的 hotmail 帐户发送邮件,并且成功了。
我的代码有什么问题?