C# SMTP發郵件不支持465端口的解決方案,網易企業郵箱


一、問題解惑,為什么465發送失敗

查閱資料得知,.net 的自帶組件System.Net.Mail發送郵件支持Explicit SSL但是不支持Implicit SSL,國內大部門郵件服務器都是Implicit SSL,所以無法通過465端口發郵件
有人說了,那干嘛要用呢,我用25不好好的么,為甚惡魔不用25呢?
這個問題問得好,很多雲服務器像阿里、騰訊購買的新機都是把25端口封禁的,想要用25端口需要手動申請解封,據阿里工作客服所說,審核通過率感人
那么今天就記錄一下如何使用465端口成功發郵件

二、解決方案

使用MailKit

需要NuGet兩個包MimeKit、MailKit

using MailKit.Net.Smtp;

using MimeKit;

using System;

using System.IO;

 

public int SendVcodeByEmail(string email)
{

Regex emailRegex = new Regex(@"^[A-Za-z\d]+([-_.][A-Za-z\d]+)*@([A-Za-z\d]+[-.]){1,2}[A-Za-z\d]{2,5}$");
if (!emailRegex.IsMatch(email)) throw new MyException(_localizer["郵箱格式非法"]); //Illegal mailbox format

int.TryParse(config[0], out var vLength);
var vCode = CommonCode.GenerateRandomText(vLength);//驗證碼
var message = new MimeMessage();
message.From.Add(new MailboxAddress("發送人姓名","發件人郵箱"));
message.To.Add(new MailboxAddress("收件人姓名", "收件人"));
message.Subject ="注冊郵箱驗證"; //郵件標題
var builder = new BodyBuilder
{
HtmlBody = "測試正文</br>正文換行"//正文
};
message.Body = builder.ToMessageBody();
using (var client = new MailKit.Net.Smtp.SmtpClient())
{
client.ServerCertificateValidationCallback = (s, c, h, e) => true;

var mSendMail = "發件人郵箱";
var mSendPwd = "發件人郵箱授權密碼";//不是郵箱密碼
client.Connect("smtp.qiye.163.com",465, true);//網易、QQ支持 25(未加密),465和587(SSL加密)
client.Authenticate(mSendMail, mSendPwd);
try
{
client.Send(message);//發送郵件
client.Disconnect(true);
return 1;// "SUCCESS";
}
catch (SmtpCommandException ex)
{
throw new MyException(ex.Message);
}
catch (Exception ex)
{
throw new MyException(ex.Message);
}
}

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM