.NetCore使用NETCore.MailKit发送邮件
生活随笔
收集整理的這篇文章主要介紹了
.NetCore使用NETCore.MailKit发送邮件
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前言
平時工作中很少用到需要發郵件的功能,所以郵件這塊的功能也沒有太過關注。近期有一個項目需要接收用戶的反饋,上邊決定使用郵件,直接將反饋信息發送給領導,也就有了這篇文章。實現發郵件不難,但是開發中遇到了一個問題,就是本地測試都是好好的,結果部署到阿里云服務器后,郵件總是發送失敗,經過一番的折騰終于找到了問題,特此記錄。
一、安裝需要的類庫
我這邊使用的 .Net Core 3.1進行的開發,經過查找最終決定使用 MailKit,這里最終選擇了 NETCore.MailKit ,不為別的,時間緊任務重,這個實現起來最方便。
Install-Package NETCore.MailKit -Version 2.0.3二、配置
配置 appsetting.json
以下示例使用的網易的163郵箱,在appsetting.json 中添加以下配置
"EmailOptions":?{"SenderName":?"系統郵件",?//發送者名稱,可在代碼中重新替換"FromAddress":?"",?//發件者郵箱"ToAddress":?"",?//接收人郵箱"Host":?"smtp.163.com",?//主機"Port":?25,?//端口?阿里云默認25端口不開放,需要使用SSL的465端口"UserName":?"",?//發件郵箱賬號"Password":?""?//發件郵箱密碼}添加 EmailOptions
針對上邊的配置,創建對應的類來實現配置文件綁定。
public?class?EmailOptions{public?string?FromAddress?{?get;?set;?}public?string?ToAddress?{?get;?set;?}public?string?Host?{?get;?set;?}public?string?UserName?{?get;?set;?}public?string?Password?{?get;?set;?}}配置 Startup
在 Startup的ConfigureServices方法中添加以下配置
//發郵件services.Configure<EmailOptions>(Configuration.GetSection("EmailOptions"));services.AddMailKit(optionBuilder?=>{optionBuilder.UseMailKit(new?MailKitOptions(){//get?options?from?sercets.jsonServer?=?Configuration.GetValue<string>("EmailOptions:Host"),Port?=?Configuration.GetValue<int>("EmailOptions:Port"),SenderName?=?Configuration.GetValue<string>("EmailOptions:SenderName"),SenderEmail?=?Configuration.GetValue<string>("EmailOptions:FromAddress"),//?can?be?optional?with?no?authentication?Account?=?Configuration.GetValue<string>("EmailOptions:UserName"),Password?=?Configuration.GetValue<string>("EmailOptions:Password"),//?enable?ssl?or?tlsSecurity?=?true});});三、發送郵件
將配置EmailOptions和 IEmailService 注入到需要使用的位置。如:
public?class?HomeController?:?Controller{private?readonly?EmailOptions?options;private?readonly?IEmailService?_EmailService;public?HomeController(IOptions<EmailOptions>?options,?IEmailService?emailService){this.options?=?options.Value;_EmailService?=?emailService;}[HttpPost]public?async?Task<ActionResult>?SendEmail(MyEntity?entity){//設置發送人的郵件地址和名稱,在接收人接收到郵件提示時會顯示該信息var?sendInfo?=?new?SenderInfo{SenderEmail?=?options.FromAddress,SenderName?=?"投訴",};await?_EmailService.SendAsync(options.ToAddress,?"投訴",?"郵件內容",?false,?sender:?sendInfo);return?Json(result);}}遇到的問題
本地開發時使用的端口是25,本地測的好好的,但是當部署到阿里云的時候,只要一執行發郵件的方法,就會超時,百思不得其解,后來得知阿里云服務器默認是禁止25端口的,解決方法就是改成465端口發送郵件。
總結
以上是生活随笔為你收集整理的.NetCore使用NETCore.MailKit发送邮件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Xamarin效果第十五篇之自定义Che
- 下一篇: 自己搭建一个k8s环境