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号