使用 MimeKit 和 MailKit 发送邮件
MimeKit 给.NET 社区带来了一流的 MIME 解析器,它能处理复杂的各种Mime, 性能好。而且开箱即用支持 S/MIME 和 PGP。MimeKit 和 MailKit 支持最新的国际化的电子邮件标准,是.NET 中为一个支持完整支持这些标准电子邮件库,最近正式发布了1.0版本。如果你想做所有与的电子邮件相关的事情,看看 MimeKit 和 MailKit。我保证你不会失望,它支持.NET/Mono的所有平台,包括移动电话、平板等。
使用方法很简单和.NET的SmtpClient 差不多,不过比它优雅多了,下面show个代码:
using MimeKit;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Mail;
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:\GitHub\TestMailClient\NetSmtpClient\.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)
}; 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);
}
} private static void TestSmtpClient()
{
MailMessage mymail = new MailMessage();
mymail.From = new System.Net.Mail.MailAddress(mailFrom);
mymail.To.Add(mailTo);
mymail.Subject = string.Format("C#自动发送邮件测试 From geffzhang TO {0}",mailTo);
mymail.Body = @"<p>Hey geffzhang<br><p>不好意思,我在测试程序,刚才把QQ号写错了,Sorry!<br><p>-- Geffzhang<br>";
mymail.IsBodyHtml = true;
mymail.Attachments.Add(new Attachment(path)); System.Net.Mail.SmtpClient smtpclient = new System.Net.Mail.SmtpClient();
smtpclient.Port = 587;
smtpclient.UseDefaultCredentials = false;
smtpclient.DeliveryMethod = SmtpDeliveryMethod.Network;
smtpclient.Host = "smtp.live.com";
smtpclient.EnableSsl = true;
smtpclient.Credentials = new System.Net.NetworkCredential(mailFromAccount, mailPassword);
try
{
smtpclient.Send(mymail);
Console.WriteLine("发送成功"); }
catch (Exception ex)
{
Console.WriteLine("发送邮件失败.请检查是否为qq邮箱,并且没有被防护软件拦截" + ex); }
}
}
}
上面代码是smtp发送代码,这个库还支持POP3, 和 IMAP 等。
使用 MimeKit 和 MailKit 发送邮件的更多相关文章
- 使用Volo.Abp.MailKit发送邮件
Volo.Abp.MailKit封装继承MailKit库,为Abp邮件发送提供了快捷实现. 邮箱配置 qq邮箱支持smtp功能,需要去申请开通.参考qq邮箱设置,最重要的是smtp发送邮件,qq邮箱对 ...
- 使用MailKit收发邮件
.Net BCL库中对于邮件的支持只有SmtpClient一个,它只能进行简单的邮件的发送操作,并且不支持POP3和SMTP,无法接收邮件,用起来有诸多不便. 今天看到园子里有文章(使用 MimeKi ...
- MailKit/MimeKit 发送邮件
MimeKit / MailKit 支持最新的国际化的电子邮件标准,是.NET 中为一个支持完整支持这些标准电子邮件库,最近正式发布了1.0版本.如果你想做所有与的电子邮件相关的事情,看看 MimeK ...
- 创建基于MailKit和MimeKit的.NET基础邮件服务
邮件服务是一般的系统都会拥有和需要的功能,但是对于.NET项目来说,邮件服务的创建和使用会较为的麻烦..NET对于邮件功能提供了System.Net.Mail用于创建邮件服务,该基础服务提供邮件的基础 ...
- MailKit和MimeKit的.NET基础邮件服务
MailKit和MimeKit的.NET基础邮件服务 邮件服务是一般的系统都会拥有和需要的功能,但是对于.NET项目来说,邮件服务的创建和使用会较为的麻烦..NET对于邮件功能提供了System.Ne ...
- MailKit和MimeKit 收发邮件
新建项目,引用MailKit和MimeKit NuGet包 using CommonTool.MailKit; using System; using System.Collections.Gener ...
- JFinal项目发送邮件——jfinal-mail-plugin
JFianl框架: JFinal 是基于 Java 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速.代码量少.学习简单.功能强大.轻量级.易扩展.Restful.在拥有Java语言所有 ...
- .NET使用MailKit进行邮件处理
0.介绍 MimeKit and MailKit are popular fully-featured email frameworks for .NET 框架支持版本如下 Supports .NET ...
- Asp.Net Core 快速邮件队列设计与实现
发送邮件几乎是软件系统中必不可少的功能,在Asp.Net Core 中我们可以使用MailKit发送邮件,MailKit发送邮件比较简单,网上有许多可以参考的文章,但是应该注意附件名长度,和附件名不能 ...
随机推荐
- MySQL Workbench中修改表字段字符集
背景介绍重要性必要性作用意义略过,开门见山: 用SQL语法修改字符集,可以参考此篇: http://www.cnblogs.com/HondaHsu/p/3640180.html MySQL提供图形界 ...
- debug : 应用程序无法正常启动(0xc000007b)
- PostgreSQL中标准的SQL boolean数据类型
- C# 取整函数
向上取整math.ceiling(1) = 1math.ceiling(1.1) = 2math.ceiling(1.5) = 2向下取整math.float(1) = 1math.float(1.1 ...
- 私有无线传感网 PWSN HLINK
私有无线传感网,我把其叫做 Personal Wireless Sensor Network.此种网络最另众人所知的就是ZIGBEE了.由于在用户不同的使用场景中,对传感网络有许多不同的要求,例如:通 ...
- Python os模块介绍
os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") 改变当前脚本工作目录:相当于shell下cd os.curd ...
- G1 垃圾收集器
概念先知 什么是垃圾回收 简单的说垃圾回收就是回收内存中不再使用的对象. 垃圾回收的基本步骤: 查找内存中不再使用的对象 释放这些对象占用的内存 查找内存中不再使用的对象 如何判断哪些对象不再被使用呢 ...
- 【Hawk】入门教程(1)——从URL开始
入门教程(1)--从URL开始 首先感谢辛苦的沙漠君 先把沙漠君的教程载过来:)可以先看一遍 Hawk-数据抓取工具:简明教程 Hawk 数据抓取工具 使用说明(二) 20分钟无编程抓取大众点评17万 ...
- 商贸食品车销成功应用PDA抄单 现场开单 打印销售单安卓智能手持POS应用
中小超市配送食品,酒水饮料,业务员以往是挨家挨户抄每个超市需要哪些东西,晚上回公司再统计,打到软件里面,开单配货. 选用PDA后,人手一台,直接在超市里面抄好货物,通过网络传输到公司软件上面,加快了工 ...
- Ruby Gem命令详解
转自:http://www.jianshu.com/p/728184da1699 Gem介绍: Gem是一个管理Ruby库和程序的标准包,它通过Ruby Gem(如 http://rubygems.o ...