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

相关文章:

  • 数据统计模块后端架构解析:从Controller到SQL的ECharts数据对接实践
  • 实现库存显示和状态按钮的Question
  • 如何将 iPhone 备份到笔记本电脑?
  • 从 Spring Boot 2.x 到 Spring Boot 3.x:全面对比与快速上手指南
  • 解决“Module ‘./@ant-design/icons‘ does not exist in container”的Webpack微前端报错
  • 【unitrix】 6.8 加一运算(add_one.rs)
  • 【机器人】HOV-SG 开放词汇 | 分层3D场景图 | 语言引导机器人导航
  • 第16章 基于AB实验的增长实践——验证想法:AB实验实践
  • 【iOS】消息传递和消息转发
  • AI IDE冲击下JetBrains作死,IDEA埋订阅陷阱
  • C++---cout、cerr、clog
  • PYTHON日志神器nb_log详细介绍和使用说明
  • leetcode:单词接龙[图广搜][无权图找最短路径]
  • C# 转换(引用转换)
  • 超简单linux上部署Apache
  • React + Mermaid 图表渲染消失问题剖析及 4 种代码级修复方案
  • B 站关键词排名提高之账号互助术:矩阵助攻,流量起飞
  • OpenAI最强ChatGPT智能体发布:技术突破与应用前景分析
  • 前端项目利用Gitlab CI/CD流水线自动化打包、部署云服务
  • 乙烯丙烯酸酯橡胶市场报告:性能优势、行业现状与发展前景​
  • 【现有资料整理】灵枢 - 用于医学领域的 SOTA 多模态大语言模型
  • Java Set 集合详解:从基础语法到实战应用,彻底掌握去重与唯一性集合
  • Pythonday17
  • 群晖中相册管理 immich大模型的使用
  • C++ :vector的介绍和使用
  • MyBatis:配置文件完成增删改查_添加
  • 【RAG实战】用户反馈如何关联算法优化
  • Redisson 分布式锁
  • 构建智能客服Agent:从需求分析到生产部署
  • 使用 jar -xvf 解压JAR文件无反应怎么办?