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

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

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

前言

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

安裝 MailKit

要想使用 MailKit,你可以使用 Visual Studio 2019 中的 NuGet package manager 可視化界面進(jìn)行安裝,或者通過(guò) 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é)點(diǎn)映射,我定義了一個(gè) NotificationMetadata 類(lèi),代碼如下:

 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; }
 }

接下來(lái)在 Startup.ConfigureServices 方法中將 NotificationMetadata 節(jié)點(diǎn)映射到 NotificationMetadata 類(lèi)。

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

生成 EmailMessage 消息類(lèi)

使用如下代碼創(chuàng)建一個(gè) EmailMessage 類(lèi)。

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 類(lèi)

下面的代碼展示了如何從自定義的 EmailMessage 類(lèi)中構(gòu)造出一個(gè) 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 類(lèi),下面的代碼展示了具體實(shí)現(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);
}

為了方便起見(jiàn),我就把完整的發(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é)來(lái)看看如何使用異步的方式發(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 除了簡(jiǎn)單的字符串,還支持模板的方式甚至可以帶上 附件 發(fā)送,更多的 MailKit 特性我會(huì)在后面的文章中和大家去討論。

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

總結(jié)

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

相關(guān)文章

最新評(píng)論

泸水县| 衡阳市| 犍为县| 石狮市| 新郑市| 徐州市| 叙永县| 天全县| 玉溪市| 芷江| 永丰县| 蒙阴县| 江津市| 白沙| 凤山市| 克东县| 扶绥县| 特克斯县| 尚志市| 桦川县| 渭南市| 华容县| 名山县| 舒兰市| 河津市| 南汇区| 揭东县| 双桥区| 阿合奇县| 甘德县| 龙里县| 佛坪县| 翁牛特旗| 会昌县| 宣威市| 江门市| 逊克县| 武冈市| 岗巴县| 霸州市| 弥勒县|