.net實(shí)現(xiàn)發(fā)送郵件的方法

這篇文章主要介紹.net實(shí)現(xiàn)發(fā)送郵件的方法,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

為銀川等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及銀川網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、銀川網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

發(fā)送郵件是一個(gè)很常用的任務(wù),幾乎每個(gè)應(yīng)用都需要。Abp提供了一個(gè)基本的框架,用于簡(jiǎn)單地發(fā)送郵件并為它分離出了郵件服務(wù)的配置。

IEmailSender

它是一個(gè)你無需了解它的細(xì)節(jié)就能簡(jiǎn)單地用來發(fā)送郵件的服務(wù),用法如下所示:

public class TaskManager : IDomainService
{private readonly IEmailSender _emailSender;    public TaskManager(IEmailSender emailSender)
    {
        _emailSender = emailSender;
    }public void Assign(Task task, Person person)
    {//Assign task to the persontask.AssignedTo = person;//Send a notification email        _emailSender.Send(
            to: person.EmailAddress,
            subject: "You have a new task!",
            body: $"A new task is assigned for you: <b>{task.Title}</b>",
            isBodyHtml: true);}
}

我們簡(jiǎn)單地注入IEmailSender,并使用Send方法,該方法有幾個(gè)重載版本,其中也有能接受MailMessage對(duì)象的重載(.net core里不能用,因?yàn)?net core不包含SmtpClient和MailMessage)。

ISmtpEmailSender

同樣也有一個(gè)ISmtpEmailSender,它擴(kuò)展了IEmailSender,添加了BuildClient方法,用來創(chuàng)建一個(gè)SmtpClient,然后可以直接使用SmtpClient(.net core里不能用,因?yàn)?net core不包含SmtpClient和MailMessage)。大部分情況下使用ISmtpEmailSender就已足夠。

NullEmailSender

NullEmailSender是IEmailSender 的Null對(duì)象設(shè)計(jì)模式的實(shí)現(xiàn),可用在單元測(cè)試和屬性依賴注入中。

配置

郵件發(fā)送使用了設(shè)置管理系統(tǒng)來讀取郵件發(fā)送的配置,所有設(shè)置的名稱都以常量的形式定義在Abp.Net.Mail.EmailSettingNames類里。下列是它的值和描述:

  • Abp.Net.Mail.DefaultFromAddress:默認(rèn)的郵件發(fā)送者的地址(如上面的示例)。

  • Abp.Net.Mail.DefaultFromDisplayName:默認(rèn)的郵件發(fā)送者顯示的名稱(如上面的示例)。

  • Abp.Net.Mail.Smtp.Host: SMTP服務(wù)器的IP或域名(默認(rèn)為127.0.0.1)。

  • Abp.Net.Mail.Smtp.Port: SMTP服務(wù)器的端口(默認(rèn)為25)。

  • Abp.Net.Mail.Smtp.UserName: 當(dāng)SMTP服務(wù)器要求認(rèn)證時(shí),需要提供的用戶名。

  • Abp.Net.Mail.Smtp.Password: 當(dāng)SMTP服務(wù)器要求認(rèn)證時(shí),需要提供的密碼。

  • Abp.Net.Mail.Smtp.Domain: 當(dāng)SMTP服務(wù)器要求認(rèn)證時(shí),需要提供的域名。

  • Abp.Net.Mail.Smtp.EnableSsl: 表明一個(gè)SMTP服務(wù)器是(true)否(false)需要使用SSL連接(默認(rèn)為false)。

  • Abp.Net.Mail.Smtp.UseDefaultCredentials: 為True時(shí)使用默認(rèn)的憑證代替提供的用戶和密碼(默認(rèn)為true)。

集成 MailKit

由于.net core不支持標(biāo)準(zhǔn)的System.Net.Mail.SmtpClient,所以我們需要第三方供應(yīng)商來發(fā)送郵件,幸運(yùn)地是,MailKit 是默認(rèn)的Smtpclient的一個(gè)很好的代替,而且微軟也建議使用它。

Abp.MailKit 包優(yōu)雅地集成到了Abp的郵件發(fā)送系統(tǒng)里,所以,你仍可像前面的方式通過MailKit使用IEmailSender。

安裝

首先,安裝Abp.MailKit 包到你的項(xiàng)目:

Install-Package Abp.MailKit

集成

添加AbpMailKitModule 依賴到你的模塊:

[DependsOn(typeof(AbpMailKitModule))]public class MyProjectModule : AbpModule
{//...}

用法

你可以像前面描述的那樣使用IEmailSender,因?yàn)锳bp.MailKit包為它注冊(cè)了MailKit的實(shí)現(xiàn)。也使用上面定義的配置。

定制

在創(chuàng)建MailKit的SmtpClient時(shí),你可能會(huì)有額外的配置或自己的定制,此時(shí),你可以用你自己的實(shí)現(xiàn)替換IMailKitSmtpBuilder 接口的注冊(cè),不過可以通過繼承DefaultMailKitSmtpBuilder 更簡(jiǎn)單。比如,你想為所有的SSL連接提供一個(gè)憑證,這種情況下,你可以重寫ConfigureClient方法,如下所示:

public class MyMailKitSmtpBuilder : DefaultMailKitSmtpBuilder{public MyMailKitSmtpBuilder(ISmtpEmailSenderConfiguration smtpEmailSenderConfiguration) 
        : base(smtpEmailSenderConfiguration)
    {
    }protected override void ConfigureClient(SmtpClient client)
    {client.ServerCertificateValidationCallback = (sender, certificate, chain, errors) => true;        base.ConfigureClient(client);
    }
}

然后在你的模塊的PreInitialize方法中用你上面的實(shí)現(xiàn)替換IMailKitStmpBuilder接口的實(shí)現(xiàn):

[DependsOn(typeof(AbpMailKitModule))]public class MyProjectModule : AbpModule
{public override void PreInitialize()
    {        Configuration.ReplaceService<IMailKitSmtpBuilder, MyMailKitSmtpBuilder>();}//...}

(記得添加"using Abp.Configuration.Startup;"聲明,因?yàn)镽eplaceService 的擴(kuò)展方法定義在這個(gè)命名空間里)。

以上是.net實(shí)現(xiàn)發(fā)送郵件的方法的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

網(wǎng)站標(biāo)題:.net實(shí)現(xiàn)發(fā)送郵件的方法
URL地址:http://muchs.cn/article28/jpjscp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷型網(wǎng)站建設(shè)、商城網(wǎng)站、網(wǎng)站排名小程序開發(fā)、關(guān)鍵詞優(yōu)化、用戶體驗(yàn)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名