System.Net.Mail.SmtpClient通过SSL/TLS协议发送邮件失败问题解决


一、问题描述

MailKit是一个开源的基于MimeKit的跨平台邮件收发类库,支持IMAP、POP3、SMTP。其中SmtpClient也支持TLS协议.

可以很好的支持 .NET Core以及 .NET Framework框架的邮件发送

安装Nuget Package

#.NET Core
dotnet add package MailKit --version 2.5.1

#.NET Framework
Install-Package MailKit -Version 2.5.1

示例代码:

using System;
using MailKit.Net.Smtp;
using MailKit;
using MimeKit;

namespace Ken.IO.Util {

    class Program
    {
        public static void Main (string[] args)
        {
            var message = new MimeMessage ();
            message.From.Add (new MailboxAddress ("test", "xxx@qq.com"));
            message.To.Add (new MailboxAddress ("test", "xxx@163.com"));
            message.Subject = "邮件测试";
            //html or plain
            var bodyBuilder = new BodyBuilder ();
            bodyBuilder.HtmlBody = "邮件测试html正文ken.io";
            bodyBuilder.TextBody = "邮件测试文本正文ken.io";
            message.Body = bodyBuilder.ToMessageBody();

            using (var client = new SmtpClient ()) {
                client.ServerCertificateValidationCallback = (s,c,h,e) => true;
                //smtp服务器,端口,是否开启ssl
                client.Connect ("smtp.qq.com", 465, true);
                client.Authenticate ("xxx@qq.com", "password");
                client.Send (message);
                client.Disconnect (true);
            }
        }
    }
}

https://www.ruanyifeng.com/blog/2014/02/ssl_tls.html
  • https://docs.microsoft.com/zh-cn/dotnet/api/system.net.mail.smtpclient
  • https://docs.microsoft.com/zh-cn/dotnet/api/system.web.mail.smtpmail
  • https://zh.wikipedia.org/wiki/傳輸層安全性協定

  • 本文首发于:https://ken.io/note/smtpclient-sending-mail-failure-via-ssl-or-tls-solved