91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

在Asp.Net Core中發送一個Email的步驟有哪些

發布時間:2021-01-21 15:06:23 來源:億速云 閱讀:193 作者:Leah 欄目:開發技術

這篇文章給大家介紹在Asp.Net Core中發送一個Email的步驟有哪些,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

安裝 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": "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"
 }

為了能夠實現 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);
}

關于在Asp.Net Core中發送一個Email的步驟有哪些就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

华安县| 万宁市| 安龙县| 韶关市| 且末县| 湛江市| 嘉善县| 庆阳市| 绥化市| 洞头县| 井陉县| 高陵县| 东宁县| 独山县| 锦屏县| 类乌齐县| 英超| 方正县| 望奎县| 苍山县| 武陟县| 临邑县| 竹溪县| 菏泽市| 诸暨市| 宁晋县| 台湾省| 清镇市| 丁青县| 桂平市| 松江区| 蓝田县| 安阳县| 青龙| 台山市| 西青区| 佛坪县| 六安市| 盐亭县| 巩留县| 阿瓦提县|