简介
在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!!!", "邮件标题",
"替换成收件人邮箱");
}
}
我把收件人邮箱换成我的另一个邮箱,执行代码。另一个邮箱收到了邮件,如下👇