您好,登錄后才能下訂單哦!
這篇文章主要介紹.net實現發送郵件的方法,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
發送郵件是一個很常用的任務,幾乎每個應用都需要。Abp提供了一個基本的框架,用于簡單地發送郵件并為它分離出了郵件服務的配置。
IEmailSender
它是一個你無需了解它的細節就能簡單地用來發送郵件的服務,用法如下所示:
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);} }
我們簡單地注入IEmailSender,并使用Send方法,該方法有幾個重載版本,其中也有能接受MailMessage對象的重載(.net core里不能用,因為.net core不包含SmtpClient和MailMessage)。
ISmtpEmailSender
同樣也有一個ISmtpEmailSender,它擴展了IEmailSender,添加了BuildClient方法,用來創建一個SmtpClient,然后可以直接使用SmtpClient(.net core里不能用,因為.net core不包含SmtpClient和MailMessage)。大部分情況下使用ISmtpEmailSender就已足夠。
NullEmailSender
NullEmailSender是IEmailSender 的Null對象設計模式的實現,可用在單元測試和屬性依賴注入中。
配置
郵件發送使用了設置管理系統來讀取郵件發送的配置,所有設置的名稱都以常量的形式定義在Abp.Net.Mail.EmailSettingNames類里。下列是它的值和描述:
Abp.Net.Mail.DefaultFromAddress:默認的郵件發送者的地址(如上面的示例)。
Abp.Net.Mail.DefaultFromDisplayName:默認的郵件發送者顯示的名稱(如上面的示例)。
Abp.Net.Mail.Smtp.Host: SMTP服務器的IP或域名(默認為127.0.0.1)。
Abp.Net.Mail.Smtp.Port: SMTP服務器的端口(默認為25)。
Abp.Net.Mail.Smtp.UserName: 當SMTP服務器要求認證時,需要提供的用戶名。
Abp.Net.Mail.Smtp.Password: 當SMTP服務器要求認證時,需要提供的密碼。
Abp.Net.Mail.Smtp.Domain: 當SMTP服務器要求認證時,需要提供的域名。
Abp.Net.Mail.Smtp.EnableSsl: 表明一個SMTP服務器是(true)否(false)需要使用SSL連接(默認為false)。
Abp.Net.Mail.Smtp.UseDefaultCredentials: 為True時使用默認的憑證代替提供的用戶和密碼(默認為true)。
集成 MailKit
由于.net core不支持標準的System.Net.Mail.SmtpClient,所以我們需要第三方供應商來發送郵件,幸運地是,MailKit 是默認的Smtpclient的一個很好的代替,而且微軟也建議使用它。
Abp.MailKit 包優雅地集成到了Abp的郵件發送系統里,所以,你仍可像前面的方式通過MailKit使用IEmailSender。
安裝
首先,安裝Abp.MailKit 包到你的項目:
Install-Package Abp.MailKit
集成
添加AbpMailKitModule 依賴到你的模塊:
[DependsOn(typeof(AbpMailKitModule))]public class MyProjectModule : AbpModule {//...}
用法
你可以像前面描述的那樣使用IEmailSender,因為Abp.MailKit包為它注冊了MailKit的實現。也使用上面定義的配置。
定制
在創建MailKit的SmtpClient時,你可能會有額外的配置或自己的定制,此時,你可以用你自己的實現替換IMailKitSmtpBuilder 接口的注冊,不過可以通過繼承DefaultMailKitSmtpBuilder 更簡單。比如,你想為所有的SSL連接提供一個憑證,這種情況下,你可以重寫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方法中用你上面的實現替換IMailKitStmpBuilder接口的實現:
[DependsOn(typeof(AbpMailKitModule))]public class MyProjectModule : AbpModule {public override void PreInitialize() { Configuration.ReplaceService<IMailKitSmtpBuilder, MyMailKitSmtpBuilder>();}//...}
(記得添加"using Abp.Configuration.Startup;"聲明,因為ReplaceService 的擴展方法定義在這個命名空間里)。
以上是.net實現發送郵件的方法的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。