【问题标题】:Cannot send mails to hotmail on win 8.1win 8.1 无法发送邮件到hotmail
【发布时间】: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


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-30
    • 2017-07-30
    • 2011-02-24
    • 2015-10-20
    • 2016-01-13
    • 1970-01-01
    • 2011-09-07
    相关资源
    最近更新 更多