zoukankan      html  css  js  c++  java
  • 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,就没问题了。

  • 相关阅读:
    linux中shell变量$#,$@,$0,$1,$2的含义解释
    oracle数据库教程从入门到精通
    ORA01078: failure in processing system parameters 启动oracle数据库时报错
    Linux中文显示乱码问题以及中文输入法安装问题
    .tar.xz文件的解压
    两个rpm文件包存在互相依赖关系时,需要同时安装,解决办法如下
    #include sys/xxx.h头文件说明
    Linux下DIR_dirent_stat等结构体详解
    创建共享无线网
    Linux 磁盘“Block Size”研究
  • 原文地址:https://www.cnblogs.com/davytitan/p/6650050.html
Copyright © 2011-2022 走看看