.netcore使用MimeKit发送邮件
以163邮箱为例,借助MimeKit
nuget安装:MimeKit类库,源码地址:https://github.com/jstedfast/MimeKit
发送方法如下:
#region 邮件发送
/// <summary>
/// 邮件发送
/// </summary>
/// <param name="sendName">发送者名称</param>
/// <param name="sendAccountName">发送者账号</param>
/// <param name="smtpHost">发送者服务器地址:例如:smtp.163.com</param>
/// <param name="smtpPort">服务器端口号:例如:25</param>
/// <param name="authenticatePassword">发送者登录邮箱账号的客户端授权码</param>
/// <param name="receiverAccountNameList">接收者账号</param>
/// <param name="mailSubject">邮件主题</param>
/// <param name="sendHtml">文本html(与sendText参数互斥,传此值则 sendText传null)</param>
/// <param name="sendText">纯文本(与sendHtml参数互斥,传此值则 sendHtml传null)</param>
/// <param name="accessoryList">邮件的附件</param>
public static void SendMail(string sendName, string sendAccountName, string smtpHost, int smtpPort, string authenticatePassword, List<string> receiverAccountNameList, string mailSubject, string sendHtml, string sendText, List<MimeKit.MimePart> accessoryList = null)
{
var message = new MimeKit.MimeMessage();
message.From.Add(new MimeKit.MailboxAddress(sendName, sendAccountName));
var mailboxAddressList = new List<MailboxAddress>();
receiverAccountNameList.ForEach(f =>
{ mailboxAddressList.Add(new MailboxAddress(f));
});
message.To.AddRange(mailboxAddressList); message.Subject = mailSubject; var alternative = new MimeKit.Multipart("alternative");
if (!string.IsNullOrWhiteSpace(sendText))
{
alternative.Add(new MimeKit.TextPart("plain")
{
Text = sendText
});
} if (!string.IsNullOrWhiteSpace(sendHtml))
{
alternative.Add(new MimeKit.TextPart("html")
{
Text = sendHtml
});
}
var multipart = new MimeKit.Multipart("mixed");
multipart.Add(alternative);
if (accessoryList != null)
{
accessoryList?.ForEach(f =>
{
multipart.Add(f);
}); }
message.Body = multipart;
using (var client = new MailKit.Net.Smtp.SmtpClient())
{
client.Connect(smtpHost, smtpPort, false);
client.AuthenticationMechanisms.Remove("XOAUTH2");
client.Authenticate(sendAccountName, authenticatePassword);
client.Send(message);
client.Disconnect(true);
}
} #endregion
使用方法:
SendMail("发送人名称", "xxxxxxx@163.com", "smtp.163.com", , "xxxxxxxxx授权码", new List<string> { { "xxxxxx@qq.com" } }, "邮件主题", @" <p>邮件文本</p> ", null, accessoryList: new List<MimePart>()
{
{
new MimeKit.MimePart("audio","mp4")
{
ContentObject = new MimeKit.ContentObject(File.OpenRead("C:\\Users\\lyj\\Desktop\\图片\\下载 (5).mp4"), MimeKit.ContentEncoding.Default),
ContentDisposition = new MimeKit.ContentDisposition(MimeKit.ContentDisposition.Attachment),
ContentTransferEncoding = MimeKit.ContentEncoding.Base64,
FileName = Path.GetFileName("C:\\Users\\lyj\\Desktop\\图片\\下载 (5).mp4")
}
},
{
new MimeKit.MimePart("audio","mp4")
{
ContentObject = new MimeKit.ContentObject(File.OpenRead("C:\\Users\\lyj\\Desktop\\图片\\下载 (3).mp4"), MimeKit.ContentEncoding.Default),
ContentDisposition = new MimeKit.ContentDisposition(MimeKit.ContentDisposition.Attachment),
ContentTransferEncoding = MimeKit.ContentEncoding.Base64,
FileName = Path.GetFileName("C:\\Users\\lyj\\Desktop\\图片\\下载 (3).mp4")
}
},
{
new MimeKit.MimePart("image","jpg")
{
ContentObject = new MimeKit.ContentObject(File.OpenRead("C:\\Users\\lyj\\Desktop\\图片\\11timg.jpg"), MimeKit.ContentEncoding.Default),
ContentDisposition = new MimeKit.ContentDisposition(MimeKit.ContentDisposition.Attachment),
ContentTransferEncoding = MimeKit.ContentEncoding.Base64,
FileName = Path.GetFileName("C:\\Users\\lyj\\Desktop\\图片\\11timg.jpg")
}
}
});
收录一些邮件服务地址对应的端口:https://blog.csdn.net/zdqdj1/article/details/48030023
.netcore使用MimeKit发送邮件的更多相关文章
- MailKit/MimeKit 发送邮件
MimeKit / MailKit 支持最新的国际化的电子邮件标准,是.NET 中为一个支持完整支持这些标准电子邮件库,最近正式发布了1.0版本.如果你想做所有与的电子邮件相关的事情,看看 MimeK ...
- 使用 MimeKit 和 MailKit 发送邮件
MimeKit 给.NET 社区带来了一流的 MIME 解析器,它能处理复杂的各种Mime, 性能好.而且开箱即用支持 S/MIME 和 PGP.MimeKit 和 MailKit 支持最新的国际化的 ...
- 创建基于MailKit和MimeKit的.NET基础邮件服务
邮件服务是一般的系统都会拥有和需要的功能,但是对于.NET项目来说,邮件服务的创建和使用会较为的麻烦..NET对于邮件功能提供了System.Net.Mail用于创建邮件服务,该基础服务提供邮件的基础 ...
- NetCore开源项目集合
具体见:https://github.com/thangchung/awesome-dotnet-core 半年前看到的,今天又看到了,记录下. 框架类: ZKWeb ABP General ASP. ...
- MailKit和MimeKit的.NET基础邮件服务
MailKit和MimeKit的.NET基础邮件服务 邮件服务是一般的系统都会拥有和需要的功能,但是对于.NET项目来说,邮件服务的创建和使用会较为的麻烦..NET对于邮件功能提供了System.Ne ...
- 【5min+】后台任务的积木。.NetCore中的IHostedService
系列介绍 [五分钟的dotnet]是一个利用您的碎片化时间来学习和丰富.net知识的博文系列.它所包含了.net体系中可能会涉及到的方方面面,比如C#的小细节,AspnetCore,微服务中的.net ...
- asp.netcore mvc 防CSRF攻击,原理介绍+代码演示+详细讲解
一.CSRF介绍 1.CSRF是什么? CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session ridin ...
- MailKit和MimeKit 收发邮件
新建项目,引用MailKit和MimeKit NuGet包 using CommonTool.MailKit; using System; using System.Collections.Gener ...
- .NetCore MVC中的路由(2)在路由中使用约束
p { margin-bottom: 0.25cm; direction: ltr; color: #000000; line-height: 120%; orphans: 2; widows: 2 ...
随机推荐
- 查看索引在哪些ES集群节点上的命令
用途:迁移数据到其他节点上的时候需要用这个 GET /_cat/shards GET /_cat/shards?h=n
- 2019-11-29-WPF-笔刷绑定不上可能的原因
原文:2019-11-29-WPF-笔刷绑定不上可能的原因 title author date CreateTime categories WPF 笔刷绑定不上可能的原因 lindexi 2019-1 ...
- 有关Oracle 查询时间的记录 (1)
目录 写在前面 一.年.月.日.季.周 二.EXTRACT 年.月.日 三.上个星期一到星期天 四.1分钟前.1小时前.1月前.1年前 五.当月.上月.当天.前天 写在前面 在使用Oracle数据开发 ...
- Asp.net MVC企业级开发(04)---SignalR消息推送
Asp.net SignalR是微软为实现实时通信而开发的一个类库.可以适用于以下场景: 聊天室,如在线客服系统,IM系统等 股票价格实时更新 消息的推送服务 游戏中人物位置的实时推送 SignalR ...
- JS删除指定下标的元素
在开发过程中,有时我们需要删除数组中某一下标的元素.JAVA中ArrayList有remove函数.但是在JavaScript中没有直接的删除方法.我们可以利用splice来实现.Array.spli ...
- Java NIO学习系列一:Buffer
前面三篇文章中分别总结了标准Java IO系统中的File.RandomAccessFile.I/O流系统,对于I/O系统从其继承体系入手,力求对类数量繁多的的I/O系统有一个清晰的认识,然后结合一些 ...
- 349套HTML5+CSS3各行各业网站模板免费下载
场景 349套HTML5+CSS3各行各业网站模板. Web前端开发是从网页制作演变而来的,名称上有很明显的时代特征.在互联网的演化进程中,网页制作是Web1.0时代产物,那时网站的主要内容是静态的, ...
- 安装gcc-c++报错解决办法
问题 每次安装依赖包gcc-c++的时候,经常会遇到包如下错误 Error: Package: libstdc++-devel--.el7_4..x86_64 (ultra-centos-7.4- ...
- mysql中的where和having的区别
下面以一个例子来具体的讲解: 1. where和having都可以使用的场景 1)select addtime,name from dw_users where addtime> 1500000 ...
- Django框架(十三)--Django分页组件
一.分页器 数据量大的话,可以分页获取,查看 例如:图书管理中,如果有成千上万本书,要是都在一个页面中渲染出来,会影响页面美观,所以就要用分页器分页渲染 二.分页器的使用 基本写法 基本写法: 后端: ...