ASP.NET CORE使用MailKit的一个故障点分析

Posted 姜大伟 QQ:41612453

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ASP.NET CORE使用MailKit的一个故障点分析相关的知识,希望对你有一定的参考价值。

ASP.NET CORE下有需要发邮件的需求,但是原来framework下的 system.net.mail,没有实现smtpclient的功能(当时看是没有,说是准备并入.net core来着),所以只能搜索三方的开源组件,就发现了MailKit了。项目地址: https://github.com/jstedfast/MailKit

 

 

public void SendEmailAsync()
        {
            var message = new MimeMessage();
            message.From.Add(new MailboxAddress("Anuraj", "test@test.com"));
            message.To.Add(new MailboxAddress("ttt", "ttt@test.com"));
            message.Subject = "Hello World - A mail from ASPNET Core";
            message.Body = new TextPart("plain")
            {
                Text = "Hello World - A mail from ASPNET Core"
            };
            using (var client = new SmtpClient())
            {
                //client.QueryCapabilitiesAfterAuthenticating = false;
                client.Connect("smtp.test.com", 25, false);
                client.AuthenticationMechanisms.Remove("XOAUTH2");
                // Note: since we don\'t have an OAuth2 token, disable
                // the XOAUTH2 authentication mechanism.     
                client.Authenticate("test1@test.com", "testpassword");
                client.Send(message);
                client.Disconnect(true);
            }

 很简单的同步代码的例子(也有异步方法可用),黄色高亮的代码,是从网上搜索来的代码中没有的,如果注释掉, 我用公司的服务器发送邮件一直失败,然后网上搜索,发现有人用aliyun邮箱,也失败,并给出了方案。

http://www.cnblogs.com/dudu/p/5661267.html 

说是在验证通过后,发送了EHLO ,导致认证失败。 由于我看的时候,版本已经更新到了 1.12版本了,所以就下载了该版本代码,跟踪了一下,果然也是这个原因引起的

if (response.StatusCode == SmtpStatusCode.AuthenticationSuccessful) {
if (QueryCapabilitiesAfterAuthenticating)
Ehlo (cancellationToken);
authenticated = true;

 如果QueryCapabilitiesAfterAuthenticating = false,应该就不发送 cancellationToken了,然后测试了下,果然可以正常发送了, 并且,这个 QueryCapabilitiesAfterAuthenticating 是一个public属性,所以,直接设置成false,就没问题了。

 

 

以上是关于ASP.NET CORE使用MailKit的一个故障点分析的主要内容,如果未能解决你的问题,请参考以下文章

asp.net core 发送QQ邮件

Ubuntu 上的 Asp Net Core - 访问被拒绝

愚公系列2023年02月 .NET CORE工具案例-使用MailKit使用SMTP协议进行邮件发送

愚公系列2023年02月 .NET CORE工具案例-使用MailKit使用POP3协议进行邮件读取

.NET CORE 下收发邮件之 MAILKIT

.Net Core 5 web api 使用 mimekit 和 mailkit 的电子邮件附件