以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发送邮件的更多相关文章

  1. MailKit/MimeKit 发送邮件

    MimeKit / MailKit 支持最新的国际化的电子邮件标准,是.NET 中为一个支持完整支持这些标准电子邮件库,最近正式发布了1.0版本.如果你想做所有与的电子邮件相关的事情,看看 MimeK ...

  2. 使用 MimeKit 和 MailKit 发送邮件

    MimeKit 给.NET 社区带来了一流的 MIME 解析器,它能处理复杂的各种Mime, 性能好.而且开箱即用支持 S/MIME 和 PGP.MimeKit 和 MailKit 支持最新的国际化的 ...

  3. 创建基于MailKit和MimeKit的.NET基础邮件服务

    邮件服务是一般的系统都会拥有和需要的功能,但是对于.NET项目来说,邮件服务的创建和使用会较为的麻烦..NET对于邮件功能提供了System.Net.Mail用于创建邮件服务,该基础服务提供邮件的基础 ...

  4. NetCore开源项目集合

    具体见:https://github.com/thangchung/awesome-dotnet-core 半年前看到的,今天又看到了,记录下. 框架类: ZKWeb ABP General ASP. ...

  5. MailKit和MimeKit的.NET基础邮件服务

    MailKit和MimeKit的.NET基础邮件服务 邮件服务是一般的系统都会拥有和需要的功能,但是对于.NET项目来说,邮件服务的创建和使用会较为的麻烦..NET对于邮件功能提供了System.Ne ...

  6. 【5min+】后台任务的积木。.NetCore中的IHostedService

    系列介绍 [五分钟的dotnet]是一个利用您的碎片化时间来学习和丰富.net知识的博文系列.它所包含了.net体系中可能会涉及到的方方面面,比如C#的小细节,AspnetCore,微服务中的.net ...

  7. asp.netcore mvc 防CSRF攻击,原理介绍+代码演示+详细讲解

    一.CSRF介绍 1.CSRF是什么? CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session ridin ...

  8. MailKit和MimeKit 收发邮件

    新建项目,引用MailKit和MimeKit NuGet包 using CommonTool.MailKit; using System; using System.Collections.Gener ...

  9. .NetCore MVC中的路由(2)在路由中使用约束

    p { margin-bottom: 0.25cm; direction: ltr; color: #000000; line-height: 120%; orphans: 2; widows: 2 ...

随机推荐

  1. 记Flask的一种设置项目配置的方法!

    在做项目时,碰到的一种设置配置的方式,主要是因为公司将所有的配置写成了一个公司专有的配置库(各种资源地址,账号等),上线后的项目需要什么配置是从这个配置库的读取.但在开发时不能使用,所以在开发时需要自 ...

  2. 《 .NET并发编程实战》阅读指南 - 第8章

    先发表生成URL以印在书里面.等书籍正式出版销售后会公开内容.

  3. 【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 ...

  4. javascript高级程序设计学习历程

    第三章 基本概念 3.1 语法 3.1.1 区分大小写 ECMAScript中的一切(变量,函数,操作符)都区分大小写的 3.1.2 标识符 标识符:变量,函数,属性的名字以及函数的参数. 标识符的命 ...

  5. PowerShell:标记“&&”不是此版本中的有效语句分隔符

    将命令行语句中的 && 改为分号 ; 就好了,就是这么简单.

  6. UUID生成库libuuid和crossguid

    libuuid是一个开源的用于生成UUID(Universally Unique Identifier,通用唯一标识符)的库. 可从https://sourceforge.net/projects/l ...

  7. Django学习之十四:Django ORM继承关系

    目录 Django ORM继承关系 1. SINGLE_TABLE(django好像不支持) 2. TABLE_PER_CLASS 3. JOINED 4. 代理继承 Django ORM继承关系 参 ...

  8. locust手机号批量注册性能测试

    from locust import TaskSet,task,HttpLocust from common.redisCon import redis_clusters import queue c ...

  9. Spring中@Autowired、@Resource和@Inject注解的使用和区别

    在使用Spring进行项目开发的时候,会大量使用到自动装配,那自动装配是什么呢?简单来说:Spring 利用依赖注入(DI)功能,完成SpringIOC容器中各个组件之间的依赖关系赋值管理. 下面介绍 ...

  10. 全局的 axios 默认值

    (1)全局的 axios 默认值 axios.defaults.baseURL = 'https://api.example.com';/*默认请求路径*/ axios.defaults.header ...