C# 发送邮件
Prepare
本文将使用一个NuGet公开的组件来实现右键发送,支持多种发送方式及自定义的邮件发送源,方便大家进行快速的开发系统。
联系作者及加群方式(激活码在群里发放):http://www.hslcommunication.cn/Cooperation
在Visual Studio 中的NuGet管理器中可以下载安装,也可以直接在NuGet控制台输入下面的指令安装:
1 | Install-Package HslCommunication |
NuGet安装教程 http://www.cnblogs.com/dathlin/p/7705014.html
Reference
ModBus组件所有的功能类都在 HslCommunication.ModBus命名空间,所以再使用之前先添加
1 | using HslCommunication.BasicFramework; |
简单例子
比如我们要发一条文本到指定的邮箱,只需要2行代码就能实现,先设置发送的对象,然后进行调用方法发送。
1 2 3 4 5 6 7 | private void userButton20_Click( object sender, EventArgs e) { // 邮件发送 SoftMail.MailSystem163.MailSendAddress = "hsl200909@163.com" ; // 先填好主题,然后填内容 SoftMail.MailSystem163.SendMail( "重要消息" , "这是一条重要的文本" ); } |
然后就能在你的邮箱里看见给你发送的邮件了,整个发送方法的发送时间大致在200ms-300ms左右,或者直接使用一行代码完成,如下代码展示
1 2 3 4 5 | private void userButton20_Click( object sender, EventArgs e) { // 邮件发送 SoftMail.MailSystem163.SendMail( "hsl200909@163.com" , "重要信息" , "这是一条重要的文本" ); } |
实际效果,如下就是截图:
如果想知道发送是否成功,需要对方法的返回结果进行判定,判定方法如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | private void userButton20_Click( object sender, EventArgs e) { // 邮件发送 SoftMail.MailSystem163.MailSendAddress = "hsl200909@163.com" ; if (SoftMail.MailSystem163.SendMail( "重要消息" , "这是一条重要的文本" )) { MessageBox.Show( "发送成功!" ); } else { MessageBox.Show( "发送失败!" ); } } |
注意:所有的SendMail 方法返回一个bool变量,可以进行判断邮件发送是否成功,本文后面的方法都省略对发送成功或是失败的验证
异常发送
在程序开发中,会发生各种各样的异常,有时候需要发送异常到你的邮箱,好作为以后判断的依据。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | private void userButton20_Click( object sender, EventArgs e) { // 邮件发送 SoftMail.MailSystem163.MailSendAddress = "hsl200909@163.com" ; try { int i = 0; int j = 20 / i; } catch (Exception ex) { SoftMail.MailSystem163.SendMail(ex); } } |
在邮件上会收到如下的界面:
系统记录了详细的异常信息来方便追踪,尤其是你的程序部署到远端的时候,这个方法就特别奏效。
当然还可以指定额外的信息。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | private void userButton20_Click( object sender, EventArgs e) { // 邮件发送 SoftMail.MailSystem163.MailSendAddress = "hsl200909@163.com" ; try { int i = 0; int j = 20 / i; } catch (Exception ex) { SoftMail.MailSystem163.SendMail(ex, "当前正在做除法运算。" ); } } |
高级发送
如果需要发送高级文本,就是网页格式的文本,这样就能发送高级的样式,下面举例说明:
1 2 3 4 5 6 7 | private void userButton20_Click( object sender, EventArgs e) { // 邮件发送 SoftMail.MailSystem163.MailSendAddress = "hsl200909@163.com" ; SoftMail.MailSystem163.SendMail( "重要消息" , "<div style=\"background: blue\">测试文本</div>" , true ); } |
这样就能在邮件的接收方接收到比较丰富的文本。
可以看到,只要熟悉html语言,就可以实现任何丰富的文本,包括图片链接,或是二进制的图片内容直接发送。
还有一个终极发送的方法,实现任何自定义的功能:
1 2 3 4 5 6 7 8 9 10 11 12 | /// <summary> /// 发送邮件的方法,需要提供完整的参数信息 /// </summary> /// <param name="addr_from">发送地址</param> /// <param name="name">发送别名</param> /// <param name="addr_to">接收地址</param> /// <param name="subject">邮件主题</param> /// <param name="body">邮件内容</param> /// <param name="priority">优先级</param> /// <param name="isHtml">邮件内容是否是HTML语言</param> /// <returns>发生是否成功,内容不正确会被视为垃圾邮件</returns> public bool SendMail( string addr_from, string name, string [] addr_to, string subject, string body, MailPriority priority, bool isHtml) |
自定义发送源
上面的代码就是使用了内置的163邮箱作为发送源,如果你想生成自己的发送源,参照下面163邮箱的创建方式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | /// <summary> /// 系统提供一个默认的163邮箱发送账号,只要更改接收地址即可发送服务,可能会被拦截 /// </summary> public static SoftMail MailSystem163 = new SoftMail( mail => { mail.Host = "smtp.163.com" ; //使用163的SMTP服务器发送邮件 mail.UseDefaultCredentials = true ; mail.EnableSsl = true ; mail.Port = 25; mail.DeliveryMethod = SmtpDeliveryMethod.Network; mail.Credentials = new System.Net.NetworkCredential( "softmailsendcenter" , "zxcvbnm6789" ); //密码zxcvbnm1234 }, "softmailsendcenter@163.com" , "hsl200909@163.com" ); |
参照这个来实例化你自己的发送即可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理