C# 使用smtp.qq.com郵箱服務發送郵件
1、開啟SMTP服務,相當于授權過程(開啟后,才可以通過這個模擬發送)
位置: 設置--> 賬號--> 賬號安全--> POP3/SMTP服務 -->開啟

2、編寫發送郵箱郵件API(引用:System.Net,System.Net.Mail)
[Route("api/[controller]")]
[ApiController]
public class MailController : ControllerBase
{
/// <summary>
/// 發送郵件
/// </summary>
[HttpPost("send")]
public IActionResult PostEmail([FromBody] Mail mailDto)
{
if (!ModelState.IsValid)
{
// 返回驗證錯誤信息
BadRequest(ModelState);
}
SMTPSendHelper.SendEmailBySMTP(mailDto);
return new JsonResult(new
{
message = "發送成功",
code = 0,
success = true
});
}
}
/// <summary>
/// 郵件發送幫助類
/// </summary>
public class SMTPSendHelper
{
/// <summary>
/// 發送郵件
/// </summary>
public static void SendEmailBySMTP(Mail mail)
{
//實例化一個發送郵件類
MailMessage mailMsg = new MailMessage();
//發件人郵箱地址
mailMsg.From = new MailAddress(mail.senderEmail);
//收件人郵箱地址
mailMsg.To.Add(new MailAddress(mail.receiverEmail));
//郵件標題的編碼格式
mailMsg.SubjectEncoding = Encoding.UTF8;
//郵件標題
mailMsg.Subject = mail.emailTitle;
//郵件內容的編碼格式
mailMsg.BodyEncoding = Encoding.UTF8;
//郵件內容
mailMsg.Body = mail.emailContent;
//是否是html郵件
mailMsg.IsBodyHtml = true;
//郵件優先級
mailMsg.Priority = MailPriority.High;
//實例化一個SmtpClient類
System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient();
//設置郵件服務名,這里使用的是QQ郵箱,所以是smtp.qq.com, 若使用163郵箱,則是 smtp.163.com
client.Host = mail.smtpService;
//設置郵件端口
client.Port = 587;
//使用安全加密連接
client.EnableSsl = true;
//不和請求一塊發送
client.UseDefaultCredentials = false;
//驗證發件人身份(發件人郵箱,郵箱生成的授權碼)
client.Credentials = new NetworkCredential(mail.senderEmail, mail.authCode);
//發送
client.Send(mailMsg);
}
}
/// <summary>
/// 郵件參數類
/// </summary>
public class Mail
{
/// <summary>
/// 發件人郵箱
/// </summary>
public string senderEmail { set; get; } = "471812366@qq.com";
/// <summary>
/// 發件人郵箱授權碼
/// </summary>
public string authCode { set; get; } = "igghkcotbwfycadh";
/// <summary>
/// 收件人郵箱
/// </summary>
[Required(ErrorMessage = "收件人郵箱是必填項")]
public string? receiverEmail { set; get; }
/// <summary>
/// 郵件標題
/// </summary>
[Required(ErrorMessage = "郵件標題是必填項")]
public string? emailTitle { set; get; }
/// <summary>
/// 郵件內容
/// </summary>
[Required(ErrorMessage = "郵件內容是必填項")]
public string? emailContent { set; get; }
/// <summary>
/// 郵件服務名:smtp.qq.com
/// </summary>
public string smtpService { set; get; } = "smtp.qq.com";
}
3、調用發送郵箱郵件代碼
//測試發送郵件
var mail = new Mail()
{
receiverEmail = "504968510@qq.com",
emailTitle = "測試郵件",
emailContent = "測試郵件內容:htttp://www.baidu.com"
};
或者JSON 調用API發生郵件
{
"receiverEmail":"504968510@qq.com",
"emailTitle":"測試標題",
"emailContent":"測試郵件內容:<b>htttp://www.baidu.com</b>"
}
4、發送后效果



浙公網安備 33010602011771號