无法使用Microsoft 365 Relay通过端口25从Azure App Service发送SMTP电子邮件

vbopmzt1  于 2023-10-22  发布在  其他
关注(0)|答案(1)|浏览(123)

我们有一个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
},
yruzcnhs

yruzcnhs1#

从评论中跟进:
当您执行缩减操作时,应用的出站IP地址集会发生更改。所以,问题可能是由于IP地址更改。如果尚未完成,则可能需要更新Microsoft 365帐户中的SMTP中继配置,以包含新的IP地址:当出站IP发生变化时
此外,Azure App Service支持两种类型的SSL连接:服务器名称指示(SNI)SSL连接和IP地址SSL连接。免费和共享服务计划不支持SSL。参见:Troubleshoot outbound SMTP connectivity problems in Azure

相关问题