// MimeMessage可以堪称MailKit里的一个邮件对象
var sendMessage = new MimeMessage();
sendMessage.Subject = "主题";
// 可以是一个发件人
sendMessage.Sender=new MailboxAddress("发件人","发件人邮箱");
// 也可以添加多个发件人,二选其一
sendMessage.From.Add(new MailboxAddress("发件人", "发件人邮箱"));
// 添加收件人信息
messageToSend.To.Add(new MailboxAddress("收件人邮箱"));
// 添加抄送(CC)人信息
messageToSend.Cc.Add(new MailboxAddress("抄送人邮箱"));
// 邮件正文两种形式
// 1. 不带附件
// html
messageToSend.Body = new TextPart(TextFormat.Html) { Text = bodyText };
// 或者纯文本
messageToSend.Body = new TextPart(TextFormat.Plain) { Text = bodyText };
// 2. 带附件
var builder=new BodyBuilder();
builder.TextBody = "邮件正文文字描述";
// 添加附件,需带完整路径或者相对路径
builder.Attachments.Add("test.xlsx");
sendMessage.Body = builder.ToMessageBody();
using (var smtp = new MailKit.Net.Smtp.SmtpClient())
{
// 1. 注册邮件发送成功之后的事件,比如记录log
// MessageSent事件里可以通过args参数,获得服务器的响应信息,以便于记录Log。
smtp.MessageSent += (sender, args) =>
{
// args.Response
};
smtp.ServerCertificateValidationCallback = (s, c, h, e) => true;
// 2. 连接服务器
// 此处以outlook邮箱为例
// await smtp.ConnectAsync("smtp.office365.com", 587, SecureSocketOptions.StartTls);
await smtp.ConnectAsync("邮箱服务器", 端口号, 安全类型);
// 3. 验证账号
await smtp.AuthenticateAsync("账号", "密码");
// 4. 发送邮件
await smtp.SendAsync(sendMessage);
// 5. 释放链接
await smtp.DisconnectAsync(true);
}