当前位置: 首页 > news >正文

【后端】.NET Core API框架搭建(10) --配置163邮件发送服务

目录

1.添加包

2.添加模型

3.添加邮件发送类

4.发送邮件

5.展示

        5.1.已发邮件

        5.2.接收邮件 


   本文是添加MailKit 处理库发送163邮件,MailKit 是一个功能强大且灵活的邮件处理库,支持IMAP, POP3和SMTP协议。以下是一个简单的指南,展示如何使用 MailKit 发送电子邮件。

1.添加包

        添加 MailKit 的NuGet管理包。

2.添加模型

        添加发送邮件模型。

namespace Frame4_LibraryCore.Email
{/// <summary>/// 发送邮件模型/// </summary>public class EmailModel{/// <summary>/// 邮件地址/// </summary>public string EmailAddress { get; set; }/// <summary>/// 标题/// </summary>public string Title { get; set; }/// <summary>/// 内容/// </summary>public string Content { get; set; }}
}

        案例如下

3.添加邮件发送类

        邮件发送帮助类(基于SMTP协议),使用MailKit库实现邮件发送功能。

using Frame5_LibraryLogger.LogHelper;
using MailKit.Net.Smtp;
using MimeKit;namespace Frame4_LibraryCore.Email
{/// <summary>/// 邮件发送帮助类(基于SMTP协议)/// 使用MailKit库实现邮件发送功能/// </summary>public static class EmailHelper{//SMTP服务器配置常量(163邮箱示例)/// <summary>/// SMTP服务器地址/// </summary>private const string SmtpHost = "smtp.163.com";/// <summary>/// SSL加密端口/// </summary>private const int SmtpPort = 465;/// <summary>/// 启用SSL加密/// </summary>private const bool UseSsl = true;/// <summary>/// 发件邮箱/// </summary>private const string SenderEmail = "你的邮件地址";/// <summary>/// 发件人显示名称/// </summary>private const string SenderName = "系统发送邮件";/// <summary>/// 邮箱授权码(非登录密码)/// </summary>private const string AuthPassword = "你的授权码(不知道怎么获取的百度)";/// <summary>/// 异步发送邮件/// </summary>/// <param name="model">邮件数据模型</param>/// <returns>发送成功返回true,失败返回false</returns>public static async Task<bool> EmailSendAsync(EmailModel model){// 参数有效性检查if (model == null || string.IsNullOrWhiteSpace(model.EmailAddress)){LogHelper.Warn("邮件发送失败: 参数无效");return false;}try{// 创建MIME格式邮件消息var message = CreateEmailMessage(model);// 创建并配置SMTP客户端using var client = new SmtpClient();// 连接SMTP服务器(异步)await client.ConnectAsync(SmtpHost, SmtpPort, UseSsl);// 使用账号密码认证(异步)await client.AuthenticateAsync(SenderEmail, AuthPassword);// 发送邮件(异步)await client.SendAsync(message);// 记录发送成功日志LogHelper.Info($"邮件发送成功,\r\n收件人:{model.EmailAddress},\r\n标题:{model.Title},\r\n内容:{model.Content}");return true;}catch (Exception ex){// 记录发送失败日志LogHelper.Error($"邮件发送失败: {ex.Message}");return false;}}/// <summary>/// 构建MIME邮件消息/// </summary>/// <param name="model">邮件数据</param>/// <returns>构建好的MimeMessage对象</returns>private static MimeMessage CreateEmailMessage(EmailModel model){var message = new MimeMessage();// 设置发件人信息message.From.Add(new MailboxAddress(SenderName, SenderEmail));// 设置收件人信息message.To.Add(new MailboxAddress(model.EmailAddress, model.EmailAddress));// 设置邮件主题message.Subject = model.Title;// 构建邮件正文var bodyBuilder = new BodyBuilder{TextBody = model.Content, // 纯文本内容// HtmlBody = "" 可在此添加HTML内容};// 添加附件示例:// if(model.Attachments != null) // {//     foreach(var file in model.Attachments)//     {//         bodyBuilder.Attachments.Add(file);//     }// }message.Body = bodyBuilder.ToMessageBody();return message;}}
}

        案例如下

4.发送邮件

        直接调用邮件发送类

/// <summary>
/// 测试邮件发送
/// </summary>
/// <returns></returns>
[HttpGet]
public async Task<bool> Emallsend()
{var model = new EmailModel(){EmailAddress = "1820769892@qq.com",Title = "测试接口",Content = $"当前时间为:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}",};var iRet = await EmailHelper.EmailSendAsync(model);return iRet;
}

        案例如下

5.展示

        5.1.已发邮件

        5.2.接收邮件 

http://www.dtcms.com/a/285562.html

相关文章:

  • 【锂电池剩余寿命预测】TCN时间卷积神经网络锂电池剩余寿命预测(Pytorch完整源码和数据)
  • C#之线程Thread
  • ARCS系统机器视觉实战(直播回放)
  • Huber Loss(胡贝损失)详解:稳健回归的秘密武器 + Python实现
  • Unity 堆栈分析实战指南 C#
  • Copula 回归与结构方程模型:R 语言构建多变量因果关系网络
  • 机器视觉的布料丝印应用
  • React条件渲染
  • 用 React-Three-Fiber 实现雪花下落与堆积效果:从零开始的 3D 雪景模拟
  • jvm分析篇---1、先认识下dump文件
  • Linux系统安装Docker及部署Node.js 20.15.0(含pnpm、pm2)完整指南
  • Docker部署前后端分离项目——多项目共享环境部署
  • GEV/POT/Markov/点过程/贝叶斯极值全解析;基于R语言的极值统计学
  • Camera相机人脸识别系列专题分析之十七:人脸特征检测FFD算法之libhci_face_camera_api.so 296点位人脸识别检测流程详解
  • vue2 面试题及详细答案150道(81 - 90)
  • 2025阿里云黑洞自救指南:从分钟级恢复到长效免疫的实战方案
  • RPG59.玩家拾取物品三:可拾取物品的提示UI
  • Excel批量生成SQL语句 Excel批量生成SQL脚本 Excel拼接sql
  • Android studio和gradle升级后的一些错误
  • YOLO 目标检测的改进方法
  • FastExcel:革新Java生态的高性能Excel处理引擎
  • [2025CVPR-目标检测方向]FSHNet:一种用于3D物体检测的全稀疏混合网络。
  • 如何为“地方升学导向型”语校建模?Prompt 框架下的宇都宫日建工科专门学校解析(7 / 500)
  • 20250718-6-Kubernetes 调度-Pod对象:环境变量,初始容器,静态_笔记
  • Python练习(6)Python面向对象编程三大特性:封装、继承与多态的15道实战练习题(含答案与深度解析)
  • 一文讲透HTML语义化标签
  • sqli-labs靶场通关笔记:第27-28a关 union、select过滤
  • Maven下载安装与idea配置
  • 2G和3G网络关闭/退网状态(截止2025年7月)
  • EaseUS Partition Master Free Edition进行磁盘重分配