【发布时间】:2018-03-26 06:37:35
【问题描述】:
我刚刚从供应商那里继承了一个网站,并查看了该网站的错误和源代码。
该应用程序基于 dotnet core 1.1 构建,并使用 Mailkit 通过我们的公司代理通过 SMTP 发送电子邮件。
问题在于邮件发送功能在发送电子邮件时表现不正常。大多数时候我调试发送方法它出错了。我们使用Authentication Required Flag 并将 userId 和 Password 传递给 MailKit Authenticate 方法
堆栈跟踪消息
AuthenticationInvalidCredentials: 5.7.3 身份验证不成功
在 MailKit.Net.Smtp.SmtpClient.Authenticate(Encoding encoding, ICredentials 凭证、CancellationToken 取消令牌)在 MailKit.MailService.Authenticate(字符串用户名,字符串密码, CancellationToken 取消令牌)在 Rules.Emailer.SendNotification.Send(字符串到,字符串来自,字符串 主题,字符串主体)在 C:\Workspace\G\Rules\Emailer\SendNotification.cs:line 94 在 G.Rules.Emailer.UserNotifications.ResetPassword(字符串
代码sn-p
using (var client = new SmtpClient())
{
client.Connect(EmailConfiguration.SmtpServer, EmailConfiguration.SmtpPort, EmailConfiguration.UseSsl);
if (EmailConfiguration.RequiresAuthentication)
{
client.Authenticate(EmailConfiguration.Username, EmailConfiguration.Password);
}
//TODO: Only Send if PROD
client.Send(message);
client.Disconnect(true);
}
return true;
}
【问题讨论】:
-
添加了使用 MailKit 将电子邮件发送到 SMTP 的代码
-
我建议获取协议日志以找出身份验证失败的原因。请参阅 MailKit 的常见问题解答以了解如何做到这一点。
-
添加协议日志
-
我使用企业 SMTP 和 System.Net.Mail 就好了,下面是一个示例 SmtpClient client = new SmtpClient { Host = mailSettings.Smtp.Network.Host, Port = mailSettings.Smtp.Network。端口, UseDefaultCredentials = false, Credentials = new NetworkCredential(mailSettings.Smtp.Network.UserName, mailSettings.Smtp.Network.Password), DeliveryMethod = SmtpDeliveryMethod.Network, //EnableSsl = true };
-
协议日志在哪里?
标签: smtp .net-core mailkit .net-core-1.1