使用MailKit发送邮件

// 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);
}

posted @ 2020-12-17 14:21  倒不了的西恩塔  阅读(494)  评论(0编辑  收藏  举报