您好,登錄后才能下訂單哦!
這篇文章給大家介紹在Asp.Net Core中發送一個Email的步驟有哪些,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
要想使用 MailKit,你可以使用 Visual Studio 2019 中的 NuGet package manager 可視化界面進行安裝,或者通過 NuGet package manager console 命令行輸入如下命令:
Install-Package NETCore.MailKit
安裝完成之后,在代碼中引入以下命令空間即可。
using MailKit.Net.Smtp; using MimeKit;
下面的代碼片段展示了在 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 類。
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; }
下面的代碼展示了如何從自定義的 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; }
為了最終能夠實現 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"; }
上面我們用同步的方式發送 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的步驟有哪些就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。