简介
在c#中发送邮箱我们只需要引入官方提供的命名空间 System.Net.Mail ,这个命名空间包含了一系列类,用于创建、配置和发送电子邮件消息。
这个命名空间中的一些主要类包括:
MailMessage
:表示一个电子邮件消息,包含发件人、收件人、抄送、密送、主题、正文等信息。SmtpClient
:用于发送电子邮件的客户端,可以配置 SMTP 服务器地址、端口、用户名和密码等。Attachment
:表示电子邮件附件,可以设置附件的文件名、内容类型等。AlternateView
:表示电子邮件的另一种视图,例如 HTML 格式的邮件正文。LinkedResource
:表示电子邮件中的链接资源,例如图片。MailAddress
:表示电子邮件地址,包含姓名和电子邮件地址。
下面我们来演示如何使用自己的qq邮箱来给别人发送邮件
获取qq邮箱授权码
点击链接,登录后点击右上角头像,点击设置
在常规General找到第三方服务Third-party Services 点击Generate Authorization Code生成授权码
点击Generate Authorization Code后会生成一个二维码,用手机微信扫描之后会自动打开短信帮你编辑好信息,点击发送短信,然后回到网页中点击SMS Sent
然后会自动跳转到下面页面,中间这个就是你当前邮箱的授权码了,把这个授权码保存好,我们发送邮件需要用到
邮件发送工具类
创建一个EmailUtil类,将下面代码copy进去,输入自己的邮箱与授权码
using System.Net.Mail;namespace ConsoleApp1;/// <summary>
/// 邮件发送工具类
/// </summary>
public static class EmailUtil
{//填写你自己需要设置的发件人邮箱private static string MyEmail = "替换成你的邮箱";//发件人邮箱授权码private static string MyKey = "替换成刚刚生成的授权码";/// <summary>/// 发送邮件/// </summary>/// <param name="strMailText">邮件内容</param>/// <param name="strTitle">标题</param>/// <param name="to">收件人(多人用;隔开)</param>/// <param name="cc">抄送(多人用;隔开)</param>/// <param name="bcc">密抄(多人用;隔开)</param>/// <returns></returns>public static string NetSendEmail(string strMailText, string strTitle, string to, string cc = "", string bcc = ""){try{List<string> toList = to.Split(';').ToList();List<string> ccList = cc.Split(';').ToList();List<string> bccList = bcc.Split(';').ToList();return NetSendEmail(strMailText, strTitle, toList, ccList, bccList);}catch (Exception ex){return ex.Message;}}/// <summary>/// 发送邮件/// </summary>/// <param name="strMailText"></param>/// <param name="strTitle"></param>/// <param name="to">收件人</param>/// <param name="cc">抄送</param>/// <param name="bcc">密抄</param>/// <returns></returns>public static string NetSendEmail(string strMailText, string strTitle, List<string> to, List<string> cc,List<string> bcc = null, string path = ""){try{System.Net.Mail.MailMessage mailMessage = new System.Net.Mail.MailMessage();mailMessage.Subject = strTitle;mailMessage.Body = strMailText;mailMessage.From = new System.Net.Mail.MailAddress(MyEmail);if (to == null || to.Count == 0){return "请填写收件人";}foreach (string semail in to){if (!string.IsNullOrEmpty(semail)){mailMessage.To.Add(semail);}}foreach (string semail in cc){if (!string.IsNullOrEmpty(semail)){mailMessage.CC.Add(semail);}}if (bcc != null){foreach (string semail in bcc){if (!string.IsNullOrEmpty(semail)){mailMessage.Bcc.Add(semail);}}}mailMessage.Priority = System.Net.Mail.MailPriority.Normal;mailMessage.IsBodyHtml = true;System.Net.Mail.SmtpClient smtpClient = new System.Net.Mail.SmtpClient();smtpClient.Port = 25;// 填写你自己需要设置的发件人邮箱, 以及授权码smtpClient.Credentials = new System.Net.NetworkCredential(MyEmail, MyKey);smtpClient.Host = "smtp.qq.com";if (!string.IsNullOrEmpty(path)){mailMessage.Attachments.Add(new Attachment(path));}smtpClient.Send(mailMessage);return "";}catch (Exception ex){return ex.Message;}}
}
发送邮件
在main方法中引用我们刚刚创建的静态工具类,如下代码,第一个参数是邮件内容,第二个参数是邮件标题,第三个参数是邮件的收件人。第四五个参数是抄送和密抄(我没这么多邮箱,就不演示了)
class Program
{public static void Main(string[] args){EmailUtil.NetSendEmail($"HelloWord!!!", "邮件标题","替换成收件人邮箱");}
}
我把收件人邮箱换成我的另一个邮箱,执行代码。另一个邮箱收到了邮件,如下👇