ASP.NET Core Library – MailKit SMTP Client
前言
以前写的 SMTP Client 相关文章:
Asp.net core 学习笔记 ( Smtp and Razor template 电子邮件和 Razor 模板 )
Email 关于 POP3 IMAP SMTP office365 Outlook Gmail G-Suit shared mailbox小小理解
.NET build-in 的 SMTP Client 已经废弃了. 官网已经给出告示:
它推荐是用 MailKit. MailKit 是一个功能齐全的 mail client library, 底层用的是 MimeKit 作者都是同一个人, 它可以实现 SMTP, POP3, IMAP 等功能.
如果只是想要 SMTP Client 功能, FluentEmail 也是一个不错的选择.
参考:
安装
dotnet add package MailKit
SmtpClient
using var client = new SmtpClient();
await client.ConnectAsync(
host: "smtp.gmail.com",
port: 587,
options: MailKit.Security.SecureSocketOptions.StartTls
);
await client.AuthenticateAsync("mygmail@gmail.com", "mypassword");
client.SslProtocols = SslProtocols.Tls12 | SslProtocols.Tls13; // 这个是默认值
创建 SmtpClient 对象, 链接 SMTP Server, 输入 username, password. 就可以了
SslProtocols 默认就是 TLS1.2 | 1.3 了 (2022年 2 月起, smtp.office365.com 不再支持 TLS 1.0 和 1.1 了). 不需要特别设置.
提醒: Gmail / Outlook 开启 Two-factor 的话, mypassword 不可以使用 user password 哦, 需要改用 App Password,
参考:
Youtube – How to get a Google App Password (full tutorial) for Gmail
Docs – Using app passwords with apps that don't support two-step verification for Outlook
p.s. hotmail, outlook, office365 的 host 是 smtp.office365.com, port 那些是一样的
MimeMessage
var message = new MimeMessage();
message.From.Add(new MailboxAddress("My Name", "mygmail@gmail.com"));
message.To.Add(new MailboxAddress("Hengkeat Yam", "hengkeat87@gmail.com"));
message.ReplyTo.Add(new MailboxAddress("Keat Keat", "keatkeat87@live.com"));
var builder = new BodyBuilder
{
HtmlBody = @"
<!DOCTYPE html>
<html lang=""en"" xmlns=""http://www.w3.org/1999/xhtml"" xmlns:o=""urn:schemas-microsoft-com:office:office"">
<head>
<meta charset=""UTF-8"">
<meta name=""viewport"" content=""width=device-width,initial-scale=1"">
<meta name=""x-apple-disable-message-reformatting"">
<title></title>
</head>
<body style=""color:red"">
test email only
</body>
</html>",
TextBody = "Test Email Only"
};
var rootPath = Path.Combine(AppContext.BaseDirectory, @"..\..\..\");
builder.Attachments.Add("tifa2.PNG", await File.ReadAllBytesAsync(Path.Combine(rootPath, "tifa2.PNG")));
message.Subject = "Test Email";
message.Body = builder.ToMessageBody();
创建一个 MimeMessage, 输入 from, to, cc, bcc, replyto, subject, body, attachments 就可以了. 都是一般发邮件会填入的资料.
最后 send, 完事.
await client.SendAsync(message);
await client.DisconnectAsync(quit: true);
ASP.NET Core Library – MailKit SMTP Client的更多相关文章
- Asp.Net Core采用MailKit部署到Linux Docker连接邮件服务器报错
前段时间看文章了解到发邮件的SmtpClient已经过时了,微软官方推荐大家用其他解决方案,例如MailKit. https://docs.microsoft.com/zh-cn/dotnet/api ...
- ASP.NET CORE使用MailKit的一个故障点分析
ASP.NET CORE下有需要发邮件的需求,但是原来framework下的 system.net.mail,没有实现smtpclient的功能(当时看是没有,说是准备并入.net core来着),所 ...
- Asp.net core 学习笔记 ( Smtp and Razor template 电子邮件和 Razor 模板 )
refer : https://dotnetcoretutorials.com/2017/08/20/sending-email-net-core-2-0/ https://ppolyzos.com/ ...
- 《ASP.NET Core 高性能系列》致敬伟大的.NET斗士甲骨文!
写在开始 三年前,曾写过一篇文章:从.NET和Java之争谈IT这个行业,当时遭到某些自认为懂得java就了不起的Javaer抨击, 现在可以致敬伟大的.NET斗士甲骨文了 (JDK8以上都需要收费, ...
- ASP.NET Core and .NET Core Library Support
ASP.NET Core and .NET Core Library Support 详情参见:https://github.com/linezero/NETCoreLibrary/blob/mast ...
- ASP.NET CORE MVC 2.0 项目中引用第三方DLL报错的解决办法 - InvalidOperationException: Cannot find compilation library location for package
目前在学习ASP.NET CORE MVC中,今天看到微软在ASP.NET CORE MVC 2.0中又恢复了允许开发人员引用第三方DLL程序集的功能,感到甚是高兴!于是我急忙写了个Demo想试试,我 ...
- 基于 ASP.NET Core 2.1 的 Razor Class Library 实现自定义错误页面的公用类库
注意:文中使用的是 razor pages ,建议使用 razor views ,使用 razor pages 有一个小坑,razor pages 会用到 {page} 路由参数,如果应用中也用到了这 ...
- 用ASP.NET Core 1.0中实现邮件发送功能
准备将一些项目迁移到 asp.net core 先从封装类库入手,在遇到邮件发送类时发现在 asp.net core 1.0中并示提供SMTP相关类库,于是网上一搜发现了MailKit 好东西一定要试 ...
- 如何在 ASP.NET Core 中发送邮件
前言 我们知道目前 .NET Core 还不支持 SMTP 协议,当我么在使用到发送邮件功能的时候,需要借助于一些第三方组件来达到目的,今天给大家介绍两款开源的邮件发送组件,它们分别是 MailKit ...
- 【ASP.NET Core】EF Core - “影子属性” 深入浅出经典面试题:从浏览器中输入URL到页面加载发生了什么 - Part 1
[ASP.NET Core]EF Core - “影子属性” 有朋友说老周近来博客更新较慢,确实有些慢,因为有些 bug 要研究,另外就是老周把部分内容转到直播上面,所以写博客的内容减少了一点. ...
随机推荐
- 如何去除字符串中的 "\n" ?80% 的同学错了!
大家好,我是鱼皮,今天分享一个小知识. 我最近负责的工作是设计一个 SQL 解析引擎.简单来说,就是将一个 SQL 表达式字符串,解析为一颗对象树,从而执行查询等一系列操作. 在最开始,我就遇到了一个 ...
- 移动web开发适配秘籍Rem
目录 移动web开发的特点 Rem 布局适配原理 Media Query(媒体查询) scss 工程使用函数计算 JS动态获取屏幕的宽度 直接将html 的 font-size 设置成 100px 移 ...
- [oeasy]python0110 屏幕点阵字体_3x5_5x7_雅达利字库
动视 桥牌 想用 7 x 5 描述黑红梅方 还是比较难的 添加图片注释,不超过 140 字(可选) 而且最下面的动视logo是 修改后的字体 还挺有动感 这个时代 图像库 和 ...
- vue小知识:多层数据双向相应之向上派发和向下派发($dispatch和$broadcast)
注意:这两个实例已经在vue3中弃用啦!!!(所以不详细说了,封装知道怎么用就行了,作为了解) 都是在vue实例配置(main.js) 向上派发:$dispatch 注意,在相应后代组件中使用 thi ...
- 2个月搞定计算机二级C语言——真题(1)解析
1. 前言 大家好,我是梁国庆. 这段时间将持续发布计算机二级 C 语言真题的解析,想要同步练习,需要资源包的朋友可以跳转免费获取--<3个月搞定计算机二级C语言--准备工作>. 现在恐怕 ...
- 全网最适合入门的面向对象编程教程:24 类和对象的 Python 实现-异常的捕获与处理:try/except 语句、文件读写示例、Exception 引用
全网最适合入门的面向对象编程教程:24 类和对象的 Python 实现-异常的捕获与处理:try/except 语句.文件读写示例.Exception 引用 摘要: 本文主要介绍了在使用 Python ...
- 在Linux中清理Buff/cache
在 Linux 中,缓冲区和缓存是为提高系统性能而保留的,但如果这些缓存过多,可能会消耗大量内存,影响系统的性能.有时候,您可能需要手动清理这些缓存以释放内存.但请注意,通常不建议定期或频繁地这样做, ...
- ipa文件上传到app store的构建版本的工具
打包好ipa文件后,可以使用mac电脑上的xcode将ipa上传到app store的构建版本中,假如没有mac电脑,可以使用香蕉云编来将ipa文件上传到构建版本. 这里我们来介绍下ipa文件上传到a ...
- IDL根据Landsat QA波段去云处理【代码】
IDL根据Landsat QA波段去云处理[代码] landsat QA波段(质量评估波段)是Landsat卫星影像数据中的一个特殊波段,他在Landsat5-9的每个产品中都存在.虽然我们常用的 ...
- 【SpringMVC】12 文件上传和下载
编写一个请求上传和下载的JSP页面 <%@ page contentType="text/html;charset=UTF-8" language="java&qu ...