1

我很想使用 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 帐户发送邮件,并且成功了。

我的代码有什么问题?

4

1 回答 1

0

这可能是 Windows 8.1(预览版)的问题。一些用户已经在MSDN 论坛TechNet 论坛上报告了这个问题。

如果您正在开发 ASP.NET 应用程序,这可能不是问题,因为您将在尚未使用 8.1 的环境中运行您的生产构建。

另一种解决方案是切换到不同的 SMTP 服务,一些用户报告说 Gmail 的 SMTP 在 8.1 预览版中运行良好。

于 2013-08-26T00:50:46.640 回答