【发布时间】:2013-07-02 10:28:18
【问题描述】:
我很想用 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 帐户发送邮件,并且成功了。
我的代码有什么问题?
【问题讨论】:
-
发送throw win8.1时是否抛出异常?
-
“失败”是什么意思?你有错误吗?如果是这样,错误信息是什么?您需要提供我们可以用来尝试和帮助的信息;您可能很清楚“它失败了”,但我们无法从这里看到您的屏幕或读懂您的想法。
-
@KenWhite 你是对的。我添加了异常描述。
标签: c# email windows-8.1