日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

.NetCore使用NETCore.MailKit发送邮件

發布時間:2023/12/4 asp.net 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .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发送邮件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。