一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - Asp.Net Core中發送Email的完整步驟

Asp.Net Core中發送Email的完整步驟

2021-12-07 15:42一線碼農 ASP.NET教程

這篇文章主要給大家介紹了關于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 命令行輸入如下命令:

?
1
Install-Package NETCore.MailKit

安裝完成之后,在代碼中引入以下命令空間即可。

?
1
2
using MailKit.Net.Smtp;
using MimeKit;

配置 Email 的基礎信息

下面的代碼片段展示了在 appsettings.json 文件中配置 email 的詳細信息。

?
1
2
3
4
5
6
7
8
"NotificationMetadata": {
 "Sender": "[email protected]",
 "SmtpServer": "smtp.gmail.com",
 "Reciever": "[email protected]",
 "Port": 465,
 "Username": "[email protected]",
 "Password": "specify your password here"
 }

為了能夠實現 configuration 中的NotificationMetadata節點映射,我定義了一個 NotificationMetadata 類,代碼如下:

?
1
2
3
4
5
6
7
8
9
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 類。

?
1
2
3
4
5
6
7
8
public void ConfigureServices(IServiceCollection services)
{
  var notificationMetadata =
  Configuration.GetSection("NotificationMetadata").
  Get<NotificationMetadata>();
  services.AddSingleton(notificationMetadata);
  services.AddControllers();
}

生成 EmailMessage 消息類

使用如下代碼創建一個 EmailMessage 類。

?
1
2
3
4
5
6
7
8
9
10
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。

?
1
2
3
4
5
6
7
8
9
10
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 類,下面的代碼展示了具體實現步驟。

?
1
2
3
4
5
6
7
8
9
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 方法下。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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。

?
1
2
3
4
5
6
7
8
9
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 特性我會在后面的文章中和大家去討論。

譯文鏈接:https://www.infoworld.com/art...

總結

到此這篇關于Asp.Net Core中發送Email的文章就介紹到這了,更多相關Asp.Net Core發送Email內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://segmentfault.com/a/1190000039018070

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产亚洲人成网站在线观看不卡 | 女人又色又爽又黄 | 楚乔传第二部免费完整 | 天天摸日日舔 | 日韩免费视频播播 | 久久99re热在线观看视频 | 青青草亚洲 | 亚洲免费福利视频 | 狠狠色伊人亚洲综合网站色 | 国产精品视频2020 | 小泽玛丽av无码观看 | 乌克兰肥熟 | 午夜宅男影院 | 免费在线影院 | 国产一级一级一级成人毛片 | 精品视频一区二区 | 精品国产一区二区三区国产馆 | 久久99亚洲热最新地址获取 | 小浪妇奶真大水多 | 成人在线观看视频免费 | 小小水蜜桃3视频在线观看 小鸟酱喷水 | 青青草国产免费国产是公开 | 亚洲精品国产SUV | 久久伊人久久 | 日本视频在线播放 | 亚洲国产99 | 操黄| 亚洲AV蜜桃永久无码精品无码网 | 天天草视频 | 国产第一草草影院 | 亚洲天堂成人在线 | 欧美人畜| 性欧美f | 欧美成人二区 | 婷婷久久综合 | 亚洲欧美日韩国产精品一区 | 国产精品视频免费观看 | 美女机机对机机的视频(免费) | 亚洲欧美日韩国产精品影院 | 日韩亚洲人成网站在线播放 | 三上悠亚国产精品一区 |