我尝试使用Office365从Azure Web App发送电子邮件。稍后,我们将其移至Azure Web Job或Azure Functions。
以下示例代码适用于 本地开发计算机 ,以及使用 内部部署SMTP服务器位于同一端口587的Azure 即可。但是,与本地计算机相同的凭据会从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;未对客户端进行身份验证以发送匿名邮件 来自[XXXXX.namprd02.prod.outlook.com]的MAIL期间 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(MailAddress sender, MailAddressCollection收件人,String deliveryNotify,布尔值 allowUnicode,SmtpFailedRecipientException&amp;例外) 第34行的System.Net.Mail.SmtpClient.Send(MailMessage消息)
答案 0 :(得分:1)
您必须修改expeditor域的DNS记录(SPF)。
例如,如果expeditor是test@mydomain.com。
您必须验证&#34; mydomain.com&#34;的DNS TXT记录,它必须包含:
v=spf1 include:spf.protection.outlook.com -all
您可以使用以下网站查看DNS记录: https://www.whois.com.au/whois/dns.html
输入您的域并单击按钮&#34;进行实时DNS查找&#34;,将显示DNS记录。
如果没有此TXT,您必须修改它......