华域联盟 .Net Asp.Net Core中发送Email的完整步骤

Asp.Net Core中发送Email的完整步骤

Asp.Net Core中发送Email的完整步骤
 更新时间:2021年01月21日 09:38:06   作者:一线码农  

这篇文章主要给大家介绍了关于Asp.Net Core中发送Email的完整步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

前言
在项目开发中常常会需要做发送 Email 的功能,在 ASP.NET Core 中你可以用 MailKit 来实现 Email 的发送,MailKit 是一个开源的客户端库,可用在 Windows,Linux 或者 Mac 上,本篇文章就来讨论在 ASP.NET Core 中去实现。
安装 MailKit

要想使用 MailKit,你可以使用 Visual Studio 2019 中的 NuGet package manager 可视化界面进行安装,或者通过 NuGet package manager console 命令行输入如下命令:

Install-Package NETCore.MailKit

安装完成之后,在代码中引入以下命令空间即可。

using MailKit.Net.Smtp;
using MimeKit;

配置 Email 的基础信息

下面的代码片段展示了在 appsettings.json 文件中配置 email 的详细信息。

"NotificationMetadata": {
"Sender": "[email protected]",
"SmtpServer": "smtp.gmail.com",
"Reciever": "[email protected]",
"Port": 465,
"Username": "[email protected]",
"Password": "specify your password here"
}

为了能够实现 configuration 中的NotificationMetadata节点映射,我定义了一个 NotificationMetadata 类,代码如下:

public class NotificationMetadata
{
public string Sender { get; set; }
public string Reciever { get; set; }
public string SmtpServer { get; set; }
public int Port { get; set; }
public string UserName { get; set; }
public string Password { get; set; }
}

接下来在 Startup.ConfigureServices 方法中将 NotificationMetadata 节点映射到 NotificationMetadata 类。

public void ConfigureServices(IServiceCollection services)
{
var notificationMetadata =
Configuration.GetSection("NotificationMetadata").
Get<NotificationMetadata>();
services.AddSingleton(notificationMetadata);
services.AddControllers();
}

生成 EmailMessage 消息类

使用如下代码创建一个 EmailMessage 类。

private MimeMessage CreateMimeMessageFromEmailMessage(EmailMessage message)
{
var mimeMessage = new MimeMessage();
mimeMessage.From.Add(message.Sender);
mimeMessage.To.Add(message.Reciever);
mimeMessage.Subject = message.Subject;
mimeMessage.Body = new TextPart(MimeKit.Text.TextFormat.Text)
{ Text = message.Content };
return mimeMessage;
}

生成 MimeMessage 类

下面的代码展示了如何从自定义的 EmailMessage 类中构造出一个 MimeMessage。

private MimeMessage CreateMimeMessageFromEmailMessage(EmailMessage message)
{
var mimeMessage = new MimeMessage();
mimeMessage.From.Add(message.Sender);
mimeMessage.To.Add(message.Reciever);
mimeMessage.Subject = message.Subject;
mimeMessage.Body = new TextPart(MimeKit.Text.TextFormat.Text)
{ Text = message.Content };
return mimeMessage;
}

用 MailKit 同步发送 Email

为了最终能够实现 email 发送,需要使用 MailKit.Net.Smtp 命名空间下的 SmtpClient 类,下面的代码展示了具体实现步骤。

using (SmtpClient smtpClient = new SmtpClient())
{
smtpClient.Connect(_notificationMetadata.SmtpServer,
_notificationMetadata.Port, true);
smtpClient.Authenticate(_notificationMetadata.UserName,
_notificationMetadata.Password);
smtpClient.Send(mimeMessage);
smtpClient.Disconnect(true);
}

为了方便起见,我就把完整的发送 Email 代码放在 DefaultController.Get 方法下。

public string Get()
{
EmailMessage message = new EmailMessage();
message.Sender = new MailboxAddress("Self", _notificationMetadata.Sender);
message.Reciever = new MailboxAddress("Self", _notificationMetadata.Reciever);
message.Subject = "Welcome";
message.Content = "Hello World!";
var mimeMessage = CreateEmailMessage(message);
using (SmtpClient smtpClient = new SmtpClient())
{
smtpClient.Connect(_notificationMetadata.SmtpServer,
_notificationMetadata.Port, true);
smtpClient.Authenticate(_notificationMetadata.UserName,
_notificationMetadata.Password);
smtpClient.Send(mimeMessage);
smtpClient.Disconnect(true);
}
return "Email sent successfully";
}

用 MailKit 异步发送 Email

上面我们用同步的方式发送 Email,这一节来看看如何使用异步的方式发送 Email。

using (SmtpClient smtpClient = new SmtpClient())
{
await smtpClient.ConnectAsync(_notificationMetadata.SmtpServer,
_notificationMetadata.Port, true);
await smtpClient.AuthenticateAsync(_notificationMetadata.UserName,
_notificationMetadata.Password);
await smtpClient.SendAsync(mimeMessage);
await smtpClient.DisconnectAsync(true);
}

最后值得注意的是,MailKit 除了简单的字符串,还支持模板的方式甚至可以带上 附件 发送,更多的 MailKit 特性我会在后面的文章中和大家去讨论。
译文链接:www.infoworld.com/art...
总结
到此这篇关于Asp.Net Core中发送Email的文章就介绍到这了,更多相关Asp.Net Core发送Email内容请搜索华域联盟以前的文章或继续浏览下面的相关文章希望大家以后多多支持华域联盟!

您可能感兴趣的文章:ASP.NET Core WebApi版本控制的实现ASP.NET Core对不同类型的用户进行区别限流详解详解如何在ASP.NET Core中编写高效的控制器详解如何在ASP.NET Core中使用IHttpClientFactoryASP.NET Core 使用Cookie验证身份的示例代码如何在ASP.Net Core使用分布式缓存的实现ASP.NET Core中如何实现重定向详解如何在ASP.NET Core中使用Session的示例代码asp.net core集成CKEditor实现图片上传功能的示例代码ASP.NET Core中实现全局异常拦截的完整步骤如何在Asp.Net Core中集成Refit

asp.netcore
发送
email

相关文章
asp.net中调用存储过程的方法这篇文章主要介绍了asp.net中调用存储过程的方法,结合实例形式分析了存储过程的建立与asp.net调用存储过程的相关技巧,需要的朋友可以参考下 2016-05-05
关于.NET动态代理的介绍和应用简介关于.NET动态代理的介绍和应用简介... 2006-09-09
.net 页面指定区域打印的方法.net 页面指定区域打印的方法,需要的朋友可以参考一下 2013-04-04
.NET Core类库System.Reflection.DispatchProxy实现简易Aop的方法这篇文章主要给大家介绍了关于.NET Core类库System.Reflection.DispatchProxy实现简易Aop的相关资料,文中通过示例代码结束的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧 2018-12-12
基于.NET的FluentValidation数据验证实现这篇文章主要介绍了基于.NET的FluentValidation数据验证实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 2020-11-11
asp.net点选验证码实现思路分享 (附demo)这篇文章主要介绍了asp.net点选验证码实现思路分享 (附demo),具有一定的参考价值,感兴趣的小伙伴们可以参考一下。 2017-01-01
根据控件Id得到控件并对该控件进行操作在做动态获取控件时,时常需要根据Id得到控件,并对该控件进行操作,示例如下,大家可以参考下 2014-06-06
silverlight用webclient大文件上传的实例代码这篇文章介绍了silverlight用webclient大文件上传的实例代码,有需要的朋友可以参考一下 2013-10-10
Asp.Net2.0权限树中Checkbox的操作Asp.Net2.0权限树中Checkbox的操作... 2006-09-09
实现ASP.NET多文件上传程序代码ASP.NET多文件上传程序 2008-03-03

最新评论

本文由 华域联盟 原创撰写:华域联盟 » Asp.Net Core中发送Email的完整步骤

转载请保留出处和原文链接:https://www.cnhackhy.com/5000.htm

本文来自网络,不代表华域联盟立场,转载请注明出处。

作者:

发表回复

联系我们

联系我们

2551209778

在线咨询: QQ交谈

邮箱: [email protected]

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部