无法通过Hotmail/live.com/outlook.com发送电子邮件。

3

我已经阅读了stackoverflow上的其他答案,但是没有一个解决方案适用于我。

我正在尝试通过live.com发送电子邮件,但无法成功。

错误信息:

mailbox unavailable. The server response was: 5.7.3 requested action aborted;
user not authenticated

或错误消息:

System.Net.Mail.SmtpException: Service not available, 
closing transmission channel. 
The server response was: Cannot connect to SMTP server 65.55.176.126 
(65.55.176.126:587), NB connect error 1460

代码如下:
MailMessage mail = new MailMessage();
mail.From = new MailAddress("email@live.com");
mail.To.Add("someone@someone.com");
mail.Subject = "hello";
mail.Body = "awefkljj kawefl";
mail.IsBodyHtml = false;

SmtpClient smtp = new SmtpClient("smtp.live.com", 587);
smtp.EnableSsl = true;
smtp.Credentials = new NetworkCredential("email@live.com", "password");
smtp.Send(mail);

您能使用以上代码发送电子邮件吗?
该代码以前可以使用,但现在不再起作用。
我不确定live.com电子邮件服务器所做的更改。
应该应用哪些新设置或参数?


你将 usedefaultcredentials 设置为 false 了吗? - box86rowh
@box86rowh 仍然存在相同的错误。你能使用这段代码发送电子邮件吗?还是只有我遇到了这个问题? - mjb
首先,请将您的 MailMessageSmtpClient 放入 using 块中:using (MailMessage mail = new MailMessage()){... using (SmtpClient smtp = new SmtpClient("smtp.live.com", 587)){...}} - John Saunders
你的代码在我这里仍然可以正常工作,没有任何更改。你是否使用了正确的凭据? - Jose Cherian
4个回答

6
我遇到了一个问题,我无法在某些主机(特别是Azure主机)上使用smtp.live.com SMTP服务器发送电子邮件。在我的情况下,SMTP尝试来自我以前从未用过的主机,因此尝试被5.7.3错误拦截:

邮箱不可用。服务器响应为:5.7.3 请求动作中止;用户未经过身份验证

解决方法是浏览帐户设置,找到其最近活动中的SMTP请求,并选择“这是我”: Verify the SMTP attempt

现在可以在此处找到:https://account.microsoft.com/ -> 安全性 -> 查看最近活动 - wp78de

2

经过测试,它可以正常工作(使用不同的主机地址和其他一些属性设置):

        using (var client = new SmtpClient("smtp-mail.outlook.com")
        {
            Port = 587,
            DeliveryMethod = SmtpDeliveryMethod.Network,
            UseDefaultCredentials = false,
            EnableSsl = true,
            Credentials = new NetworkCredential(_sender, _password)
        })
        {
            using (var mail = new MailMessage(_sender, _recipient)
            {
                Subject = _subject,
                Body = _message
            })
            {
                client.Send(mail);
            }
        }

1
此外,如果该账户开启了两步验证,您将需要生成一个应用程序密码并使用它来代替原密码。

0

你的代码对我来说没有任何问题,使用 live.com 地址也一样。只需输入错误的密码即可生成相同的异常。

我建议进行以下检查:

  1. 用户最近是否更改了密码?您能否通过 Web 接口提供的凭据进行登录?
  2. 如果是,请确保您的程序使用的是完全相同的凭据。请注意,空格可能会成为您的敌人。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接