我正在使用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错误的重复,但是我在那里找不到解决方案,所以我想重新开始讨论。
问题中的代码没有问题。基本上,需要对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。