最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Asp.Net Core中發(fā)送Email的完整步驟

 更新時間:2021年01月21日 09:38:06   作者:一線碼農(nóng)  
這篇文章主要給大家介紹了關(guān)于Asp.Net Core中發(fā)送Email的完整步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

在項目開發(fā)中常常會需要做發(fā)送 Email 的功能,在 ASP.NET Core 中你可以用 MailKit 來實現(xiàn) Email 的發(fā)送,MailKit 是一個開源的客戶端庫,可用在 Windows,Linux 或者 Mac 上,本篇文章就來討論在 ASP.NET Core 中去實現(xiàn)。

安裝 MailKit

要想使用 MailKit,你可以使用 Visual Studio 2019 中的 NuGet package manager 可視化界面進行安裝,或者通過 NuGet package manager console 命令行輸入如下命令:

Install-Package NETCore.MailKit

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

using MailKit.Net.Smtp;
using MimeKit;

配置 Email 的基礎(chǔ)信息

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

"NotificationMetadata": {
 "Sender": "sender_email@gmail.com",
 "SmtpServer": "smtp.gmail.com",
 "Reciever": "receiver_email@yahoo.com",
 "Port": 465,
 "Username": "sender_email_user@gmail.com",
 "Password": "specify your password here"
 }

為了能夠?qū)崿F(xiàn) configuration 中的NotificationMetadata節(jié)點映射,我定義了一個 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 節(jié)點映射到 NotificationMetadata 類。

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

生成 EmailMessage 消息類

使用如下代碼創(chuàng)建一個 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 類中構(gòu)造出一個 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 同步發(fā)送 Email

為了最終能夠?qū)崿F(xiàn) email 發(fā)送,需要使用 MailKit.Net.Smtp 命名空間下的 SmtpClient 類,下面的代碼展示了具體實現(xiàn)步驟。

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

為了方便起見,我就把完整的發(fā)送 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 異步發(fā)送 Email

上面我們用同步的方式發(fā)送 Email,這一節(jié)來看看如何使用異步的方式發(fā)送 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 除了簡單的字符串,還支持模板的方式甚至可以帶上 附件 發(fā)送,更多的 MailKit 特性我會在后面的文章中和大家去討論。

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

總結(jié)

到此這篇關(guān)于Asp.Net Core中發(fā)送Email的文章就介紹到這了,更多相關(guān)Asp.Net Core發(fā)送Email內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

高陵县| 沂水县| 柞水县| 广东省| 米林县| 临漳县| 穆棱市| 东丽区| 喜德县| 易门县| 宝清县| 深泽县| 安庆市| 抚宁县| 江口县| 仁寿县| 盐城市| 裕民县| 德州市| 锡林郭勒盟| 布拖县| 南昌县| 沽源县| 屏东县| 凤翔县| 大余县| 石棉县| 抚宁县| 芦溪县| 长寿区| 贡山| 永康市| 乐昌市| 晋州市| 建昌县| 长子县| 南平市| 长宁县| 绿春县| 滦南县| 明水县|