【问题标题】:Azure Web App cannot send email from smtp.office365.comAzure Web App 无法从 smtp.office365.com 发送电子邮件
【发布时间】:2018-08-17 02:04:28
【问题描述】:

我正在尝试使用 Office365 从 Azure Web App 发送电子邮件。稍后,我们会将其移至 Azure Web Job 或 Azure Functions。

以下示例代码可在本地开发机器以及使用同一端口 587 的本地 SMTP 服务器的 Azure 中工作 em>。但是,与本地计算机相同的凭据会从 Azure 中的 smtp.office365.com 引发异常。

问题似乎出在 Azure 和 Office 365 之间。 任何帮助将不胜感激!

Sending email from an Azure App Service using an O365 SMTP server

MailMessage msg = new MailMessage();
msg.To.Add(new MailAddress("To Email Address", "Benjamin"));
msg.From = new MailAddress("From Email Address", "You");
msg.Subject = "Azure Web App Email using smtp.office365.com";
msg.Body = "Test message using smtp.office365.com on Azure from a Web App";
msg.IsBodyHtml = true;
SmtpClient client = new SmtpClient();
client.UseDefaultCredentials = false;
client.Credentials = new System.Net.NetworkCredential("O365 UID", "O365 PASS");
client.Port = 587;
client.Host = "smtp.office365.com";
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.EnableSsl = true;
client.Send(msg); <-- Line 34

异常

System.Net.Mail.SmtpException:SMTP 服务器需要安全 连接或客户端未通过身份验证。服务器响应 是:5.7.57 SMTP;客户端未通过身份验证以发送匿名邮件 在 MAIL FROM [XXXXXX.namprd02.prod.outlook.com] 期间 System.Net.Mail.MailCommand.CheckResponse(SmtpStatusCode statusCode, 字符串响应)在 System.Net.Mail.MailCommand.Send(SmtpConnection conn, Byte[] 命令, MailAddress from, Boolean allowUnicode) at System.Net.Mail.SmtpTransport.SendMail(邮件地址发件人, MailAddressCollection 收件人,字符串 deliveryNotify,布尔值 allowUnicode、SmtpFailedRecipientException& 异常)在 System.Net.Mail.SmtpClient.Send(MailMessage message) 在第 34 行

【问题讨论】:

    标签: c# asp.net azure smtp office365


    【解决方案1】:

    您必须修改 expeditor 域上的 DNS 记录 (SPF)。

    例如,如果 expeditor 是 test@mydomain.com。

    您必须验证“mydomain.com”的 DNS TXT 记录,它必须包含:

    v=spf1 include:spf.protection.outlook.com -all
    

    您可以通过此网站检查您的 DNS 记录: https://www.whois.com.au/whois/dns.html

    输入您的域名并点击“Do live DNS lookup”按钮,DNS 记录就会出现。

    如果没有这个TXT,你必须修改它...

    看这个链接: https://answers.microsoft.com/en-us/msoffice/forum/msoffice_outlook-mso_winother-mso_o365b/client-was-not-authenticated-to-send-anonymous/d405bcb0-f40c-42fa-b1b2-477597100123

    【讨论】:

    • 我很好奇为什么我可以在调试代码的同时从本地机器发送电子邮件。但是,具有完全相同信息的相同代码在 Azure 中不起作用。
    • 因为如果我理解的话,当你在本地机器上时,你使用另一个 SMTP 女巫会更宽容。 office365 SMTP 在 SPF 中需要 spf.protection.outlook.com:我遇到了同样的问题。
    • 基于我对 SMTP 的有限了解,我应该使用spf.protection.outlook.com 而不是smtp.office365.com。那是对的吗?如果没有,您能否在回答中详细说明我需要在 Office 365 中更改的内容?
    • 不,您必须使用 smtp.office365.com 但您必须修改您域的 DNS 记录
    • 我编辑我的答案以解释如何检查您的 DNS 记录
    猜你喜欢
    • 2022-08-17
    • 2022-11-15
    • 2016-04-23
    • 1970-01-01
    • 2022-11-08
    • 1970-01-01
    • 1970-01-01
    • 2011-11-17
    • 2010-11-28
    相关资源
    最近更新 更多