• MailKit/MimeKit 发送邮件


    MimeKit / MailKit 支持最新的国际化的电子邮件标准,是.NET 中为一个支持完整支持这些标准电子邮件库,最近正式发布了1.0版本。如果你想做所有与的电子邮件相关的事情,看看 MimeKit 和 MailKit。我保证你不会失望,它支持.NET/Mono的所有平台,包括移动电话、平板等.

    废话不多说,直接上代码:

    using MimeKit;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using MailKit.Net.Smtp;
    using System.IO;
     
    namespace NetSmtpClient
    {
        class Program
        {
            const string mailFrom = "xxxx@hotmail.com";
            const string mailTo = "xxxx@qq.com";
            const string mailFromAccount = "xxxx@hotmail.com";
            const string mailPassword = "xxxx";
            const string path = @"E:GitHubTestMailClientNetSmtpClient.NETFoundation.png";
            static void Main(string[] args)
            {
                TestSmtpClient();
     
                TestMailKit();
     
            }
     
            private static void TestMailKit()
            {
                var message = new MimeMessage();
                message.From.Add(new MailboxAddress("geffzhang", mailFrom));
                message.To.Add(new MailboxAddress("geffzhang", mailTo));
                message.Subject = string.Format("C#自动发送邮件测试 From geffzhang TO {0}", mailTo);
     
                var plain = new TextPart("plain")
                {
                    Text = @"不好意思,我在测试程序,刚才把QQ号写错了,Sorry!"
                };
                var html = new TextPart("html")
                {
                    Text = @"<p>Hey geffzhang<br>
    <p>不好意思,我在测试程序,刚才把QQ号写错了,Sorry!<br>
    <p>-- Geffzhang<br>"
                };
                // create an image attachment for the file located at path
                var attachment = new MimePart("image", "png")
                {
                    ContentObject = new ContentObject(File.OpenRead(path), ContentEncoding.Default),
                    ContentDisposition = new ContentDisposition(ContentDisposition.Attachment),
                    ContentTransferEncoding = ContentEncoding.Base64,
                    FileName = Path.GetFileName(path)
                };
               attachment.ContentType.Parameters.Add("GB18030", "name", fileName);
               attachment.ContentDisposition.Parameters.Add("GB18030", "filename", fileName)var alternative = new Multipart("alternative"); alternative.Add(plain); 
    alternative.Add(html); 
    // now create the multipart/mixed container to hold the message text and the
    // image attachment
    var multipart = new Multipart("mixed");
    multipart.Add(alternative); multipart.Add(attachment);
    message.Body
    = multipart;
    using (var client = new MailKit.Net.Smtp.SmtpClient())
    {
      client.Connect(
    "smtp.live.com", 587, false);
    // Note: since we don't have an OAuth2 token, disable
    // the XOAUTH2 authentication mechanism.
    client.AuthenticationMechanisms.Remove("XOAUTH2");
    // Note: only needed if the SMTP server requires authentication
    client.Authenticate(mailFromAccount, mailPassword); client.Send(message); client.Disconnect(
    true);
    }
    }
    }
    }

    上面代码是smtp发送代码,这个库还支持POP3, IMAP 等。

  • 相关阅读:
    $动态规划系列(1)——金矿模型的理解
    $Java HttpClient库的使用
    $Java-json系列(二):用JSONObject解析和处理json数据
    $百度应用引擎BAE的使用与应用部署
    利用ajax短轮询+php与服务器交互制作简易即时聊天网站
    MYSQL explain详解
    Redis 5种数据结构使用及注意事项
    Redis 存储机制
    memcache
    mysql分表和表分区详解
  • 原文地址:https://www.cnblogs.com/xtxk110/p/11660594.html
Copyright © 2020-2023  润新知