首页 > 解决方案 > 尝试在 asp.net 核心应用程序中使用 SmtpClient 发送电子邮件时出错

问题描述

我正在尝试从 asp.net 核心应用程序发送电子邮件,但我不断收到错误消息

SmtpException:SMTP 服务器需要安全连接或客户端未通过身份验证。服务器响应为:5.7.57 客户端未通过身份验证发送邮件。[JN2P275CA0038.ZAFP275.PROD.OUTLOOK.COM]

我也尝试过检查防火墙规则并增加超时,但没有帮助,所以我不确定出了什么问题

这是我发送电子邮件的代码

   SmtpClient client = new SmtpClient("smtp.office365.com")
                    {
                        //Port = 587, //outlook port 587
                        Port = 587, 
                        EnableSsl = true,
                        //UseDefaultCredentials
                        UseDefaultCredentials = false,
                        TargetName = "STARTTLS/smtp.office365.com",
                        DeliveryMethod = SmtpDeliveryMethod.Network,
                        Credentials = new NetworkCredential("myemail@myemails.com","password"),
                    };

                    MailMessage message = new MailMessage()
                    {
                        From = new MailAddress("myemail@myemails.com"),
                        Subject = "New Requisition",
                        Body = "New requisition has been created:" + " " + requisition.RequisitionNo,
                        IsBodyHtml = true,
                    };

                    message.To.Add(SubmissionNotfication.To);
                    //message.CC.Add(SubmissionNotfication.Cc);
                    //var attachment = new System.Net.Mail.Attachment(filePath); //Attachment(string fileName, string mediaType) 
                    //message.Attachments.Add(attachment);
                    client.Send(message);
                }
        

标签: c#asp.net-coreemailsmtpclient

解决方案


查看如何设置应用程序以使用 Microsoft 365 或 Office 365 发送电子邮件

您可能必须使用 MX 端点作为发送域并尝试使用端口 25

SmtpClient client = new SmtpClient("yourorganisation.mail.protection.outlook.com")
{
    Port = 25, 
    EnableSsl = true,
    UseDefaultCredentials = false,
    Credentials = new NetworkCredential("myemail@myemails.com","password"),
};


推荐阅读