前言

以前写的 SMTP Client 相关文章:

Asp.net core 学习笔记 ( Smtp and Razor template 电子邮件和 Razor 模板 )

ASP.NET Email + WebConfig

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 也是一个不错的选择.

参考:

MailKit Docs

安装

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的更多相关文章

  1. Asp.Net Core采用MailKit部署到Linux Docker连接邮件服务器报错

    前段时间看文章了解到发邮件的SmtpClient已经过时了,微软官方推荐大家用其他解决方案,例如MailKit. https://docs.microsoft.com/zh-cn/dotnet/api ...

  2. ASP.NET CORE使用MailKit的一个故障点分析

    ASP.NET CORE下有需要发邮件的需求,但是原来framework下的 system.net.mail,没有实现smtpclient的功能(当时看是没有,说是准备并入.net core来着),所 ...

  3. Asp.net core 学习笔记 ( Smtp and Razor template 电子邮件和 Razor 模板 )

    refer : https://dotnetcoretutorials.com/2017/08/20/sending-email-net-core-2-0/ https://ppolyzos.com/ ...

  4. 《ASP.NET Core 高性能系列》致敬伟大的.NET斗士甲骨文!

    写在开始 三年前,曾写过一篇文章:从.NET和Java之争谈IT这个行业,当时遭到某些自认为懂得java就了不起的Javaer抨击, 现在可以致敬伟大的.NET斗士甲骨文了 (JDK8以上都需要收费, ...

  5. ASP.NET Core and .NET Core Library Support

    ASP.NET Core and .NET Core Library Support 详情参见:https://github.com/linezero/NETCoreLibrary/blob/mast ...

  6. 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想试试,我 ...

  7. 基于 ASP.NET Core 2.1 的 Razor Class Library 实现自定义错误页面的公用类库

    注意:文中使用的是 razor pages ,建议使用 razor views ,使用 razor pages 有一个小坑,razor pages 会用到 {page} 路由参数,如果应用中也用到了这 ...

  8. 用ASP.NET Core 1.0中实现邮件发送功能

    准备将一些项目迁移到 asp.net core 先从封装类库入手,在遇到邮件发送类时发现在 asp.net core 1.0中并示提供SMTP相关类库,于是网上一搜发现了MailKit 好东西一定要试 ...

  9. 如何在 ASP.NET Core 中发送邮件

    前言 我们知道目前 .NET Core 还不支持 SMTP 协议,当我么在使用到发送邮件功能的时候,需要借助于一些第三方组件来达到目的,今天给大家介绍两款开源的邮件发送组件,它们分别是 MailKit ...

  10. 【ASP.NET Core】EF Core - “影子属性” 深入浅出经典面试题:从浏览器中输入URL到页面加载发生了什么 - Part 1

    [ASP.NET Core]EF Core - “影子属性”   有朋友说老周近来博客更新较慢,确实有些慢,因为有些 bug 要研究,另外就是老周把部分内容转到直播上面,所以写博客的内容减少了一点. ...

随机推荐

  1. oeasy教您玩转python - 001 - # 换行插入

    ​ 先跑起来 Python 什么是 Python? Python 很好用 适合初学者 而且在各个领域都很强大 ​ 后来居上 ​ 上图可以点开 python3 早已有之 最终逆风翻盘 当然 java 也 ...

  2. 如何解决 CentOS 7 官方 yum 仓库无法使用的问题

    一.背景介绍 2024 年 7 月 1 日,在编译基于 CentOS 7.6.1810 镜像的 Dockerfile 过程中,执行 yum install 指令时,遇到了错误:Could not re ...

  3. 入门到精通rsync和inotify

    rsync 作用: 实现文件的备份 备份位置可以是当前主机,也可以是远程主机 备份过程可以是完全备份,也可以是增量备份 功能: 1)类似于cp的复制功能 将本地主机的一个文件复制到另一个位置下 2)将 ...

  4. openGL之多线程渲染

    随着Vulkan的引入,我们的图形技术的发展到达了一个新的顶点,但是呢,我们的老干爹OpenGL作为落日余晖,他在一些Vulkan才有的新功能上,也提供了一些支持,现在我们来讨论一下OpenGL之多线 ...

  5. SpringBoot实战:Spring Boot接入Security权限认证服务

    引言 Spring Security 是一个功能强大且高度可定制的身份验证和访问控制的框架,提供了完善的认证机制和方法级的授权功能,是一个非常优秀的权限管理框架.其核心是一组过滤器链,不同的功能经由不 ...

  6. VScode配置PHP开发环境

    vscode配置php开发环境 使用vscode配置PHP开发环境,首先要下载vscode, vscode下载 下载完vscode之后,可以在扩展里面下载中文版本 将vscode下载完之后,需要下载x ...

  7. 【Python】GUI开发笔记

    一.环境搭建: 1.Pycharm开发工具 pycharm历史版本 https://www.jetbrains.com/pycharm/download/other.html 破解插件 https:/ ...

  8. 【Java】Mysql文档生成工具

    资料参考: https://blog.csdn.net/weixin_43797561/article/details/122809269 https://blog.csdn.net/qq_33177 ...

  9. tensorflow 数据集对象(tf.data)的使用( tf.data.Dataset 、tf.data.TextLineDataset 、 tf.data.TFRecordDataset ) 示例

    tensorflow   使用数据集(tf.data)的方法对数据集进行操纵. 1.    对   数组(内存向量)  进行操纵 : import tensorflow as tf input_dat ...

  10. python3.13是否移除了GIL的限制

    近日看到新闻: https://baijiahao.baidu.com/s?id=1773013936355276204&wfr=spider&for=pc https://www.t ...