.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 ...
随机推荐
- 记Flask的一种设置项目配置的方法!
在做项目时,碰到的一种设置配置的方式,主要是因为公司将所有的配置写成了一个公司专有的配置库(各种资源地址,账号等),上线后的项目需要什么配置是从这个配置库的读取.但在开发时不能使用,所以在开发时需要自 ...
- 《 .NET并发编程实战》阅读指南 - 第8章
先发表生成URL以印在书里面.等书籍正式出版销售后会公开内容.
- 【docker】centos7 上拉取docker镜像,一直拉取不到,报错:Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while w
镜像拉取一直报错: Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request cancel ...
- javascript高级程序设计学习历程
第三章 基本概念 3.1 语法 3.1.1 区分大小写 ECMAScript中的一切(变量,函数,操作符)都区分大小写的 3.1.2 标识符 标识符:变量,函数,属性的名字以及函数的参数. 标识符的命 ...
- PowerShell:标记“&&”不是此版本中的有效语句分隔符
将命令行语句中的 && 改为分号 ; 就好了,就是这么简单.
- UUID生成库libuuid和crossguid
libuuid是一个开源的用于生成UUID(Universally Unique Identifier,通用唯一标识符)的库. 可从https://sourceforge.net/projects/l ...
- Django学习之十四:Django ORM继承关系
目录 Django ORM继承关系 1. SINGLE_TABLE(django好像不支持) 2. TABLE_PER_CLASS 3. JOINED 4. 代理继承 Django ORM继承关系 参 ...
- locust手机号批量注册性能测试
from locust import TaskSet,task,HttpLocust from common.redisCon import redis_clusters import queue c ...
- Spring中@Autowired、@Resource和@Inject注解的使用和区别
在使用Spring进行项目开发的时候,会大量使用到自动装配,那自动装配是什么呢?简单来说:Spring 利用依赖注入(DI)功能,完成SpringIOC容器中各个组件之间的依赖关系赋值管理. 下面介绍 ...
- 全局的 axios 默认值
(1)全局的 axios 默认值 axios.defaults.baseURL = 'https://api.example.com';/*默认请求路径*/ axios.defaults.header ...