zoukankan      html  css  js  c++  java
  • .Net Core邮件发送之MailKit

    一 、在.Net Core中MailKit中提供了邮件的基础封装

    它支持跨平台,并且支持 IMAP, POP3, SMTP 等协议

    Nuget命令:

    Install-Package MailKit

    官方Git地址:https://github.com/jstedfast/MailKit

    注:

    1.目前版本v1.16.1

    2.SmtpClient中处理编码有些问题,对于服务器的异常相应中文显示乱码

    二、使用实例:

    MimeMessage message = new MimeMessage();
    //发件人
    message.From.Add(new MailboxAddress("张三丰", "xxx@qq.com"));
    //收件人
    message.To.Add(new MailboxAddress("测试", "xxx@163.com"));
    //标题
    message.Subject = "测试标题内容";
    //产生一个支持HTml 的TextPart
    TextPart body = new TextPart(TextFormat.Html)
    {
        Text = "<h1>测试内容</h1>"
    };
    
    //创建Multipart添加附件
    Multipart multipart = new Multipart("mixed");
    multipart.Add(body);
    //附件
    string absolutePath = @"F:桌面新建文件夹mysql1.sql";
    MimePart attachment = new MimePart()
    {
        //读取文件,只能用绝对路径
        ContentObject = new ContentObject(File.OpenRead(absolutePath), ContentEncoding.Default),
        ContentDisposition = new ContentDisposition(ContentDisposition.Attachment),
        ContentTransferEncoding = ContentEncoding.Base64,
        //文件名字
        FileName = Path.GetFileName(absolutePath)
    };
    multipart.Add(attachment);
    
    //正文内容,发送
    message.Body = multipart;
    //message.Body = body;
    using (SmtpClient client = new SmtpClient())
    {
        //Smtp服务器
        client.Connect("smtp.qq.com", 587, false);
        //登录,发送
        //特别说明,对于服务器端的中文相应,Exception中有编码问题,显示乱码了
        client.Authenticate("xxx@qq.com", "xxx");
    
        client.Send(message);
        //断开
        client.Disconnect(true);
        Console.WriteLine("发送邮件成功");
    }

    关于邮件中待手机号的识别测试如下:

    (特别说明:目前没找到,客户端发送qq群邮件的方法。 暂时还是只发给个人。 )

    MimeMessage message = new MimeMessage();
    //发件人
    message.From.Add(new MailboxAddress("xxx@qq.com"));
    //收件人
    message.To.Add(new MailboxAddress("xxxx@qq.com"));
    //标题
    message.Subject = "测试";
    //内容
    TextPart body = new TextPart(TextFormat.Html)
    {
        //a标签正常的话会被 客户端屏蔽掉
        //Text = "<h1>测试内容</h1> <a href='tel:15154123615'>15154123615</a>"
    
        //a标签不正常关闭,客户端可以一键拨打(支持在IOS的QQ端,QQ邮箱App端  原因:这两个客户端对于手机号自动识别)
        //在微信提醒客户端中就不支持
        Text = "<h1>测试内容</h1> <a href='tel:15154123615'>15154123615</tel>"
    };
    message.Body = body;
    using (SmtpClient client = new SmtpClient())
    {
        //smtp服务器
        client.Connect("smtp.qq.com", 587, false);
        //登录账号
        client.Authenticate("xxxx@qq.com", "password");
        client.Send(message);
        client.Disconnect(true);
        Console.WriteLine("邮件发送成功");
    }

    更多:

    .NetCore中EFCore for MySql整理

    Asp.Net Core WebAPI入门整理(三)跨域处理

    Asp.Net Core中Json序列化处理整理

  • 相关阅读:
    爱情五十三课,爱情银行
    [技术][JavaScript] <<JQuery 实战(Jquery in Action)>> Bear Bibeault & Yehuda Katz(美)
    [生活][健康] <<点食成金>> 范志红
    专一不是一辈子只喜欢一个人,是喜欢一个人的时候一心一意。
    【生活智慧】001.追求实在的东西
    【生活智慧】002.以上帝的"特选子民"自居
    【生活智慧】003.不能为了一顿鸡鸭鱼肉而让其他日子挨饿
    爱情五十四课,最需要的一刻
    爱情五十课,牵手的力量
    爱情五十五课,选择可以承担的
  • 原文地址:https://www.cnblogs.com/tianma3798/p/6941727.html
Copyright © 2011-2022 走看看