【发布时间】:2021-08-31 23:06:29
【问题描述】:
我正在尝试从 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);
}
【问题讨论】:
-
可能有两个错误原因。如果您在使用 Outlook 邮件服务器的公司网络内,则无法访问其他邮件服务器。所有 587 端口都被转发到 Outlook 代理服务器进行身份验证。从家里尝试代码,看看它是否有效。如果您在公司网络内,则可能不需要安全连接,并且使用端口 25 可能会起作用。当您在防火墙内时,不需要额外的保护,加密电子邮件将使病毒检查器难以验证邮件。
-
使用的密码是否有可能包含一些“外来”字符,例如德语变音符号?
-
hmm.. 很难保证您的配置/设置和客户端是正确的。事实上,在这方面它不太可能是正确的。除此之外,“客户端未通过身份验证发送邮件”。似乎是一个奇怪的消息。关于我对认证和授权的理解,我认为应该写成“Client not [authorized] to send mail”。您是否已验证客户端是否有权针对调用它的 API 执行此操作?
-
另外,您是否尝试将 IP 地址指定为主机(我不确定
TargetName部分......也许它没有按名称注册并且无法通过名称解析?) -
这个问题本质上是这个stackoverflow.com/questions/6244694/…的副本。虽然那个没有一个公认的答案并且被提出反对测试版。它有几个更现代且与此问题相关的答案。
标签: c# asp.net-core email smtp client