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

要想使用 MailKit,你可以使用 Visual Studio 2019 中的 NuGet package manager 可視化界面進(jìn)行安裝,或者通過 NuGet package manager console 命令行輸入如下命令:
Install-Package NETCore.MailKit
安裝完成之后,在代碼中引入以下命令空間即可。
using MailKit.Net.Smtp; using MimeKit;
下面的代碼片段展示了在 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)映射,我定義了一個 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é)點(diǎn)映射到 NotificationMetadata 類。
public void ConfigureServices(IServiceCollection services)
{
var notificationMetadata =
Configuration.GetSection("NotificationMetadata").
Get<NotificationMetadata>();
services.AddSingleton(notificationMetadata);
services.AddControllers();
}使用如下代碼創(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;
}下面的代碼展示了如何從自定義的 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;
}為了最終能夠?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";
}上面我們用同步的方式發(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);
}關(guān)于在Asp.Net Core中發(fā)送一個Email的步驟有哪些就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
新聞名稱:在Asp.NetCore中發(fā)送一個Email的步驟有哪些-創(chuàng)新互聯(lián)
URL分享:http://chinadenli.net/article36/gccsg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、搜索引擎優(yōu)化、App開發(fā)、品牌網(wǎng)站設(shè)計、全網(wǎng)營銷推廣、域名注冊
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容