提问者:小点点

C#使用office365 smtp发送电子邮件


我正在使用C#从本地计算机发送电子邮件,但在执行以下代码时(出于测试目的)遇到错误。

C#代码:

protected void SendEmail(string emailAddres)
{
    SmtpClient smtp = new SmtpClient();

    MailMessage mail = new MailMessage()
    {
        To = { new MailAddress(emailAddres) },
        From = new MailAddress("email@email.com", "fromEmail"),
        Subject = "Subject of a test email!",
        IsBodyHtml = true,
        Body = "Test body email.",
        BodyEncoding = System.Text.Encoding.UTF8,
        SubjectEncoding = System.Text.Encoding.UTF8
    };

   try
   {
       smtp.Send(mail);
       lblResultEmail.Text = "Message Sent Succesfully";
       lblResultEmail.ForeColor = System.Drawing.Color.Green;
   }
   catch (Exception ex)
   {
       lblResultEmail.Text = ex.ToString();
       lblResultEmail.ForeColor = System.Drawing.Color.Red;
   }
}

在Web.config我添加了以下内容:

  <system.net>
    <mailSettings>
      <smtp deliveryMethod="Network">
        <network host="smtp.office365.com" port="587" defaultCredentials="false" enableSsl="true"  
                 userName="email@email.com" password="ThisPwd" targetName="STARTTLS/smtp.office365.com"
        />
      </smtp>
    </mailSettings>
  </system.net>

错误消息:

系统网邮政SmtpException:SMTP服务器需要安全连接,或者客户端未通过身份验证。服务器响应为:5.7。57 SMTP;在系统上从[AM0PR05CA0077.eurprd05.prod.outlook.com]发送邮件期间,客户端未通过发送匿名邮件的身份验证。网邮政MailCommand。系统上的CheckResponse(SmtpStatusCode状态码、字符串响应)。网邮政MailCommand。在系统上发送(SmtpConnection conn,Byte[]命令,maildAddress from,布尔allowinicode)。网邮政短程运输。SendMail(MailAddress发件人、MailAddressCollection收件人、字符串deliveryNotify、布尔AllowInCode、SmtpFailedRecipientException

编辑:

当试图通过Office 365发送电子邮件时,这可能是SMTP 5.7.57错误的重复,但是我在那里找不到解决方案,所以我想重新开始讨论。


共1个答案

匿名用户

问题中的代码没有问题。基本上,需要对Office365帐户进行配置。

有关更多信息,请查看以下Microsoft留档。

https://docs.microsoft.com/en-us/exchange/clients-and-mobile-in-exchange-online/authenticated-client-smtp-submission#enable-特定邮箱的smtp身份验证

如果您已使用GoDa购买了Office 365电子邮件帐户,请要求他们启用SMTP AUTH。他们会为您启用它,但您仍然无法在他们的主机上使用office365 smtp服务器,除非您使用虚拟专用服务器,因为戈达德阻止了共享主机的端口587。