以前官方自带一个smpt类可以发送邮件,现在好像弃用了。虽然仍然可以使用,但总归不如先学一下新的方法。遂采用了微软官方推荐的一个第三方库:MailKit
还需引入另一个MimeKit库,用于创建消息。
我的发送邮件是扩展功能,所以是静态方法,所需的参数我将通过参数传递。遂定义一个email的实体类、

public class SendEmailDTO { /// <summary> /// 发送人邮箱 /// </summary> public string FromEmail { get; set; } /// <summary> /// 收件人邮箱 /// </summary> public string ToEmail { get; set; } /// <summary> /// 发送人 /// </summary> public string FromUserName { get; set; } /// <summary> /// 收件人 /// </summary> public string ToUserName { get; set; } /// <summary> /// 主题 /// </summary> public string Subject { get; set; } /// <summary> /// 消息 /// </summary> public string Text { get; set; } /// <summary> /// 邮箱服务器 /// </summary> public string Host { get; set; } /// <summary> /// 端口[465加密,25不加密] /// </summary> public int Port { get; set; } /// <summary> /// 发送邮箱授权码 /// </summary> public string Code { get; set; } }
然后就是发送邮件的方法

public static void Send(SendEmailDTO dto) { #region Mime消息体 MimeMessage mime = new(); //发送者邮箱 mime.From.Add(new MailboxAddress(dto.FromUserName, dto.FromEmail)); //接收者邮箱 mime.To.Add(new MailboxAddress(dto.ToUserName, dto.ToEmail)); //邮件主体 mime.Subject = dto.Subject; //邮件消息的主体,可以html,目前只是txt mime.Body = new TextPart(MimeKit.Text.TextFormat.Plain) { Text = dto.Text }; #endregion Mime消息体 #region 发送 //创建smtp实例: SmtpClient 是一个用于与 SMTP 服务器进行交互的类 using SmtpClient client = new(); //与smpt服务器建立连接 client.Connect(dto.Host, dto.Port, dto.Port == 465); //使用提供的凭证进行身份验证 client.Authenticate(dto.FromEmail, dto.Code); //发送信息 client.Send(mime); //关闭连接 client.Dispose(); #endregion 发送 }
调用也很方便

SendEmail.Send(new Model.EntityDTO.SendEmailDTO() { FromEmail = "163@163.com", FromUserName = "野原新之助", Host = "smtp.163.com", Port = 465, Subject = "打个招呼", Text = @"你赖东东 不错嘛!", ToEmail = "qq@qq.com", ToUserName = "小王" });
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· 【.NET】调用本地 Deepseek 模型
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库