我们有一个Microsoft 365企业帐户,我们希望使用该帐户从托管在Azure(Azure应用服务)中的.NET Core C# Blazor应用程序发送电子邮件。
我们遵循本文档的选项3:将连接器配置为使用Microsoft 365或Office 365 SMTP中继发送邮件,以便在365帐户的Exchange中设置外部中继。
当我们的应用程序服务计划设置为免费层时,我们能够成功地从Azure中的Blazor应用程序将电子邮件从使用我们域(email protected(https://stackoverflow.com/cdn-cgi/l/email-protection))的电子邮件地址发送到外部Gmail地址,从而证明中继正在工作。
然而,一旦我们将应用程序服务计划升级到付费层(我已经尝试了基本B1和标准S1),电子邮件无法发送,并给出以下错误:
System.Net.Mail.SmtpException:无法找到。服务器响应为:5.7.64租户归属;中继访问被拒绝[“”的ValidationStatus为EmptyCertificate]
当我将应用服务计划改回免费层时.它又起作用了。有没有其他人遇到过这种情况,或者可能知道为什么电子邮件不能从付费的Azure应用服务计划发送,而是从免费的Azure应用服务计划发送?
在我们的Blazor应用程序中,我有一个按钮,它调用以下方法:
private async Task SendEmail()
{
MailMessage msg = new MailMessage
{
From = new MailAddress("[email protected]"),
Subject = "365 Test",
Body = "Hello, this is a test."
};
msg.To.Add(new MailAddress("someexternalema[email protected]"));
await EmailService.SendAsync(msg);
}
它调用我们的电子邮件服务:
public interface ITestEmailService
{
Task SendAsync(MailMessage mailMessage);
}
public class TestEmailService : ITestEmailService
{
private readonly NetworkCredential networkCredentials;
private readonly SmtpClientConfiguration smtpClientConfiguration;
public TestEmailService(SmtpClientConfiguration smtpClientConfiguration)
{
this.smtpClientConfiguration = smtpClientConfiguration;
networkCredentials = new NetworkCredential
{
UserName = smtpClientConfiguration.Username,
Password = smtpClientConfiguration.Password
};
}
public async Task SendAsync(MailMessage mailMessage)
{
using var smtpClient = new SmtpClient();
smtpClient.UseDefaultCredentials = false;
smtpClient.Credentials = networkCredentials;
smtpClient.Host = smtpClientConfiguration.Host;
smtpClient.Port = smtpClientConfiguration.Port;
smtpClient.EnableSsl = smtpClientConfiguration.Ssl;
smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
if (mailMessage != null)
await smtpClient.SendMailAsync(mailMessage);
}
}
我们的应用程序设置如下:
"SmtpClientConfiguration": {
"Username": "",
"Password": "",
"Host": "<our company MX record>",
"Port": 25,
"Ssl": true
},
1条答案
按热度按时间yruzcnhs1#
从评论中跟进:
当您执行缩减操作时,应用的出站IP地址集会发生更改。所以,问题可能是由于IP地址更改。如果尚未完成,则可能需要更新Microsoft 365帐户中的SMTP中继配置,以包含新的IP地址:当出站IP发生变化时
此外,Azure App Service支持两种类型的SSL连接:服务器名称指示(SNI)SSL连接和IP地址SSL连接。免费和共享服务计划不支持SSL。参见:Troubleshoot outbound SMTP connectivity problems in Azure