无法使用 Microsoft 365 中继通过端口 25 从 Azure 应用服务发送 SMTP 电子邮件

问题描述 投票:0回答:1

我们有一个 Microsoft 365 企业帐户,我们希望使用该帐户从 Azure(Azure 应用服务)中托管的 .NET Core C# Blazor 应用程序发送电子邮件。

我们遵循本文档的选项 3:配置连接器以使用 Microsoft 365 或 Office 365 SMTP 中继发送邮件,以便在我们的 365 帐户的 Exchange 中设置外部中继。

当我们的应用服务计划设置为免费套餐时,我们能够从 Azure 中的 Blazor 应用程序从使用我们的域 ([email protected]) 的电子邮件地址成功发送电子邮件到外部 Gmail 地址,从而证明继电器正在工作。

但是,一旦我们将应用服务计划升级到付费级别(我已经尝试过基本 B1 和标准 S1),电子邮件将无法发送,并出现以下错误:

System.Net.Mail.SmtpException:邮箱不可用。服务器 响应是:5.7.64 TenantAttribution;中继访问被拒绝 [“”的验证状态为空证书]

当我将应用服务计划更改回免费套餐时...它会再次运行。还有其他人遇到过这种情况吗,或者可能知道为什么电子邮件不会从付费的 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
},
c# azure email smtp office365
1个回答
0
投票

评论中的后续行动:

当您执行缩减操作时,您的应用程序的出站 IP 地址集会发生变化。因此,该问题可能是由于 IP 地址更改造成的。如果尚未完成,您可能需要更新 Microsoft 365 帐户中的 SMTP 中继配置以包含新的 IP 地址:当出站 IP 更改时

此外,Azure 应用服务支持两种类型的 SSL 连接:服务器名称指示 (SNI) SSL 连接和 IP 地址 SSL 连接。免费和共享服务计划不支持 SSL。 请参阅:排查 Azure 中的出站 SMTP 连接问题

© www.soinside.com 2019 - 2024. All rights reserved.