当前位置: 首页 > 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.lryc.cn/news/592091.html

相关文章:

  • 应用集成体系深度解析:从数据互通到流程协同
  • 实现库存显示和状态按钮的Question
  • nginx定制http头信息
  • python实现Markdown转化PDF的方案
  • 关于字符编辑器vi、vim版本的安装过程及其常用命令:
  • 小架构step系列18:工具
  • web3 区块链技术与用
  • 6 种无线传输照片从安卓到 Mac 的方法
  • 在ComfyUI中CLIP Text Encode (Prompt)和CLIPTextEncodeFlux的区别
  • 5 种可行的方法:如何将 Redmi 联系人备份到 Mac
  • AI进入自动驾驶时代:OpenAI发布革命性ChatGPT Agent
  • 飞牛上使用Docker方式部署LibreTV,再配合内网穿透,实现免费无广告刷剧的服务教程
  • 深度剖析:最新发布的ChatGPT Agent 技术架构与应用场景
  • uniapp+vue2——自定义底部导航tabbar
  • android版本编译问题之Hvac 应用体积优化问题处理记录
  • 从一开始的网络攻防(四):XSS
  • 推荐算法召回:架构理解
  • 正则表达式,Collection集合,迭代器
  • 正则表达式完全指南:从入门到实战
  • Kotlin集合分组
  • 黑马Node.js全套入门教程,nodejs新教程含es6模块化+npm+express+webpack+promise等_ts对象笔记
  • Kotlin集合过滤
  • 【Python】LEGB作用域 + re模块 + 正则表达式
  • uni-app 跳转页面传参
  • SpringCloud相关总结
  • 牛油果果实检测-目标检测数据集(真实环境下)
  • 基于SpringBoot 投票系统 【源码+LW+PPT+部署】
  • 【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 基于jieba实现词频统计
  • 在 React 中根据数值动态设置 SVG 线条粗细
  • Hadoop与云原生集成:弹性扩缩容与OSS存储分离架构深度解析