提问人:Trystan Lapinig-Wilcock 提问时间:10/3/2023 更新时间:10/17/2023 访问量:261
无法通过端口 25 使用 Microsoft 365 中继从 Azure 应用服务发送 SMTP 电子邮件
Unable to send SMTP email from Azure App Service using Microsoft 365 Relay via port 25
问:
我们有一个 Microsoft 365 商业帐户,我们希望使用它从 Azure 中托管的 .NET Core C# Blazor 应用程序(Azure 应用服务)发送电子邮件。
我们遵循了本文档的选项 3:配置连接器以使用 Microsoft 365 或 Office 365 SMTP 中继发送邮件,以便在 365 帐户的 Exchange 中设置外部中继。
当我们的应用服务计划设置为免费层时,我们能够成功地从 Azure 中的 Blazor 应用程序从使用我们的域 ([email protected]) 的电子邮件地址发送到外部 Gmail 地址,从而证明中继正在工作。
但是,一旦我们将应用服务计划升级到付费层(我尝试了基本 B1 和标准 S1),电子邮件就无法发送,并出现以下错误:
System.Net.Mail.SmtpException:邮箱不可用。服务器 响应是:5.7.64 TenantAttribution;中继访问被拒绝 [“的 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
},
答:
从评论中跟进这一点:
执行缩减操作时,应用的出站 IP 地址集会发生变化。因此,问题可能是由于 IP 地址更改造成的。如果尚未完成此操作,则可能需要更新 Microsoft 365 帐户中的 SMTP 中继配置,以包含新的 IP 地址:出站 IP 更改时
此外,Azure 应用服务还支持两种类型的 SSL 连接:服务器名称指示 (SNI) SSL 连接和 IP 地址 SSL 连接。免费和共享服务计划不支持 SSL。 请参阅:排查 Azure 中的出站 SMTP 连接问题
评论