• 使用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);
    }
    
    
  • 相关阅读:
    SQL之CASE WHEN用法详解
    MySQL笔记汇总
    Linux常用命令
    TCP/IP速记
    数据结构和算法速记
    多线程相关概念
    线程安全&Java内存模型
    线程通讯wait&notify
    创建多线程的4种方式
    重写ThreadPoolTaskExecutor
  • 原文地址:https://www.cnblogs.com/cndota2/p/14149396.html
Copyright © 2020-2023  润新知