zoukankan      html  css  js  c++  java
  • MailKit在.NetCore5下发送邮件 An error occurred while attempting to establish an SSL or TLS connection

    问题:

    异常:An error occurred while attempting to establish an SSL or TLS connection.

    This usually means that the SSL certificate presented by the server is not trusted by the system for one or more of
    the following reasons:

    1. The server is using a self-signed certificate which cannot be verified.
    2. The local system is missing a Root or Intermediate certificate needed to verify the server's certificate.
    3. A Certificate Authority CRL server for one or more of the certificates in the chain is temporarily unavailable.
    4. The certificate presented by the server is expired or invalid.
    5. The set of SSL/TLS protocols supported by the client and server do not match.
    6. You are trying to connect to a port which does not support SSL/TLS.

    See https://github.com/jstedfast/MailKit/blob/master/FAQ.md#SslHandshakeException for possible solutions.
    MailKit at MailKit.Net.Smtp.SmtpClient.ConnectAsync(String host, Int32 port, SecureSocketOptions options, Boolean doAsync, CancellationToken cancellationToken)

    MailKit  版本 2.12.0  Linux Centos 7.9  

    源代码:

     using (var client = new SmtpClient())
                    {
                      //  client.CheckCertificateRevocation = false;
                      //  client.ServerCertificateValidationCallback = (s, c, h, e) => true;
                        await client.ConnectAsync(_emailConfiguration.SmtpServer, _emailConfiguration.SmtpPort, SecureSocketOptions.Auto);
                        await client.AuthenticateAsync(_emailConfiguration.SmtpUsername, _emailConfiguration.SmtpPassword);
                        await client.SendAsync(mimeMessage);
                        await client.DisconnectAsync(true);
                    }
    接收服务器:
    imap.exmail.qq.com(使用SSL,端口号993)
    发送服务器:
    smtp.exmail.qq.com(使用SSL,端口号465)

    解决方案:

    openssl.cnf的配置问题

    openssl_conf = openssl_init
    
    [openssl_init]
    ssl_conf = ssl_config
    
    [ssl_config]
    system_default = tls_defaults
    
    [tls_defaults]
    CipherString = @SECLEVEL=2:kEECDH:kRSA:kEDH:kPSK:kDHEPSK:kECDHEPSK:-aDSS:-3DES:!DES:!RC4:!RC2:!IDEA:-SEED:!eNULL:!aNULL:!MD5:-SHA384:-CAMELLIA:-ARIA:-AESCCM8
    Ciphersuites = TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:TLS_AES_128_CCM_SHA256
    MinProtocol = TLSv1.2
    作者:曾祥展
    声明:本文的版权归作者与博客园共有。转载时须注明本文的详细链接,否则作者将保留追究其法律责任。
    Email  RSS   Twitter  Facebook 
  • 相关阅读:
    Leetcode 回溯法 典型例题
    LeetCode 回溯法 别人的小结 八皇后 递归
    回溯算法 LEETCODE别人的小结 一八皇后问题
    python学习 面向对象高级编程
    python 学习 面向对象编程
    python 学习 模块
    python 学习 map /reduce
    pyhton 学习 函数式编程
    python学习 函数
    使用dict和set
  • 原文地址:https://www.cnblogs.com/zengxiangzhan/p/14774394.html
Copyright © 2011-2022 走看看