欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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)源的客戶端庫(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)文章

  • asp.net SQL存儲(chǔ)過(guò)程分頁(yè)

    asp.net SQL存儲(chǔ)過(guò)程分頁(yè)

    上周花一下午時(shí)間寫(xiě)了個(gè)分頁(yè).給大家分享下,如果寫(xiě)得不好請(qǐng)大家指出一起討論哈,小弟第一次寫(xiě)文章哈..謝謝.
    2009-05-05
  • ASP.NET Web Page應(yīng)用深入探討

    ASP.NET Web Page應(yīng)用深入探討

    這些內(nèi)容是我在學(xué)習(xí)ASP.Net的時(shí)候?qū)age研究的一些心得,具體的細(xì)節(jié)沒(méi)有很詳細(xì)的探討,更多的內(nèi)容請(qǐng)大家參考MSDN,但是我舉了一些初學(xué)者常犯的錯(cuò)誤和出現(xiàn)錯(cuò)誤的原因,希望可以給大家?guī)?lái)啟發(fā)。
    2009-08-08
  • ASP.NET FileUpload 上傳圖片實(shí)例

    ASP.NET FileUpload 上傳圖片實(shí)例

    Add a FileUpload control to the aspx page
    2009-09-09
  • asp.net 面試 筆試題目[附答案]

    asp.net 面試 筆試題目[附答案]

    收集并整理自網(wǎng)絡(luò),實(shí)時(shí)更新,希望大家找到合適的工作。
    2009-05-05
  • asp.net 截取字符串代碼

    asp.net 截取字符串代碼

    asp.net字符串截取實(shí)現(xiàn)代碼,需要的朋友可以參考下。
    2009-12-12
  • 如何在?ASP.NET?Core?Web?API?中處理?Patch?請(qǐng)求

    如何在?ASP.NET?Core?Web?API?中處理?Patch?請(qǐng)求

    這篇文章主要介紹了在?ASP.NET?Core?Web?API中處理Patch請(qǐng)求,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-05-05
  • .NET?core項(xiàng)目AsyncLocal在鏈路追蹤中的應(yīng)用

    .NET?core項(xiàng)目AsyncLocal在鏈路追蹤中的應(yīng)用

    這篇文章主要為大家介紹了.NET?core項(xiàng)目zhong?AsyncLocal在鏈路追蹤中的應(yīng)用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • 淺談ASP.NET Core 2.0 部分視圖(譯)

    淺談ASP.NET Core 2.0 部分視圖(譯)

    本篇文章主要介紹了淺談ASP.NET Core 2.0 部分視圖(譯),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • 使用.NET存儲(chǔ)XML數(shù)據(jù)的方法

    使用.NET存儲(chǔ)XML數(shù)據(jù)的方法

    使用.NET存儲(chǔ)XML數(shù)據(jù)的方法...
    2007-04-04
  • asp.net xml序列化與反序列化

    asp.net xml序列化與反序列化

    在.NET下有一種技術(shù)叫做對(duì)象序列化,它可以將對(duì)象序列化為二進(jìn)制文件、XML文件、SOAP文件,這樣, 使用經(jīng)過(guò)序列化的流進(jìn)行傳輸效率就得到了大大的提升。
    2008-08-08

最新評(píng)論