.NetCore使用NETCore.MailKit发送邮件

f9ebbe0b5f18911b3add4466b1072ecd.png

前言

平时工作中很少用到需要发邮件的功能,所以邮件这块的功能也没有太过关注。近期有一个项目需要接收用户的反馈,上边决定使用邮件,直接将反馈信息发送给领导,也就有了这篇文章。实现发邮件不难,但是开发中遇到了一个问题,就是本地测试都是好好的,结果部署到阿里云服务器后,邮件总是发送失败,经过一番的折腾终于找到了问题,特此记录。

一、安装需要的类库

我这边使用的 .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端口发送邮件。5bfdbc84124df421a3ba307963f018c1.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/289727.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

哄媳妇

1、如果你的女人在你面前哭了&#xff0c;无论什么原因&#xff0c;请抱紧她&#xff0c;再反抗也要抱紧&#xff0c;趴在桌子上永远没有在你怀里安心&#xff1b; 2、如果你的女人指出了你的不是&#xff0c;请不要总是嫌她唠叨&#xff0c;若不是因为在乎她不会说你&#xff…

自己搭建一个k8s环境

背景Kubernetes 是时下流行的容器编排引擎&#xff0c;因为字母太多&#xff0c;且掐头去尾后剩下 8 个字母&#xff0c;于是被大家亲切的缩写为 k8s。Kubernetes https://kubernetes.io/另外所谓“云原生”概念火爆&#xff0c;各大云厂商也纷纷推出了自己的容器服务&#xff…

个人电脑 公司电脑 代理_这样的电脑谁来用?一体式水冷,磁悬浮风扇!

原标题&#xff1a;这样的电脑谁来用&#xff1f;一体式水冷&#xff0c;磁悬浮风扇&#xff01;海盗船是个人电脑市场资历最老、信誉最好的个人电脑元件制造商之一。该公司最初的产品主要是和存储相关的&#xff0c;后来&#xff0c;海盗船开始慢慢向其他细分市场扩张。虽然他…

VMware虚拟机中CentOS网络设置

在VMware虚拟机中安装了一个CentOS系统&#xff0c;试着学习了一下该系统下的网络设置&#xff0c;记录如下&#xff1a; VMware虚拟机中比较方便的联网方式是NAT方式&#xff0c;这里采用该方式。 CentOS默认使用ipv6协议联网&#xff0c;则虚拟机会给该系统分配ipv6地址&…

沿途风景

1.麦积山&#xff08;甘肃省天水市麦积区&#xff09;2014年8月27日 2.柳湖公园&#xff08;甘肃省平凉市&#xff09;2014年8月25日 3.崆峒山&#xff08;甘肃省平凉市&#xff09;2014年8月26日 4.净土寺&#xff08;甘肃省天水市麦积区&#xff09;2014年8月27日 5.仙人崖&a…

如何格式化电脑_移动硬盘提示格式化如何解决?数据恢复软件解决问题

使用移动硬盘的时候&#xff0c; 硬盘用久了&#xff0c;会出现各种各样的错误&#xff0c;最终导致无法使用&#xff0c;常常出现提示“格式化”&#xff0c;这时候就挺烦恼的&#xff0c;如果使用不当的话&#xff0c;就会引发各种奇怪的问题&#xff0c;其中最严重的的就是提…

在 WASI 上运行 .NET 7 应用程序

WASI代表 WebAssembly 系统接口&#xff0c;WASI 让沙盒化的 WebAssembly 应用程序通过一系列类似 POSIX 的函数访问底层操作系统&#xff0c;允许独立于浏览器运行 WebAssembly 代码。这是一个高度实验性的项目&#xff0c;但同时也是一个非常有趣的项目&#xff0c;并且有可能…

【ArcGIS遇上Python】ArcGIS Python实现长时间序列遥感影像批量处理--以裁剪为例

任务分析&#xff1a;在采用遥感方法研究植被物候变化时&#xff0c;需要下载长时间序列&#xff08;本文用到的是30年&#xff09;GIMMS 3G NDVI数据。原始数据是全球的&#xff0c;预处理过程包括几何校正、裁剪、投影变换、Hants时间序列谐波分析等等。在这过程中&#xff0…

差异表达基因热图怎么看_差异基因热图绘制:heatmap.2

在RNA-seq数据分析中&#xff0c;差异表达基因分析是一项基本的技能&#xff0c;其中热图又是一种特别常见的用来展示差异表达基因分析结果的方式&#xff0c;今天分享一个非常好用的绘制热图的R函数&#xff1a;heatmap.2。该函数来自gplots包。安装install.packages("gp…

朋友公司招聘用的一套C#基础面试题,10个码农8个错2个蒙,我也跳坑了…

朋友公司的一套面试题&#xff0c;很有意思&#xff0c;参见如下代码&#xff1a;class Program{static void Main(string[] args){var t Num();Console.WriteLine(t);Console.ReadLine();}static int Num(){int i 10;try{return i;}finally{i 11;Console.WriteLine($"…

【原创】ucos信号量的操作及原理

信号量的操作及原理 1.OSSemCreate创建信号量semaphore在使用信号量之前&#xff0c;要先用OSSemCreate创建一个信号量&#xff0c;并通过返回的合法事件结构体指针使用信号量。OS_EVENT *OSSemCreate(INT16U cnt){#if OS_CRITICAL_METHOD 3 /* 原理请查看http://blog.csdn.ne…

JMeter之JMS接口测试

JMeter中的JMS Point-to Point、JMS Publisher和JMS Subscriber分别用于发送JMS的PTP消息和PUB/SUB消息&#xff0c;可以选择使用JMeter来测试JMS。 MOM&#xff08;消息中间件&#xff09;作为消息数据交换的平台&#xff0c;也是影响应用执行效率的潜在环节。在Java程序中&am…

AutoRest - 具有 C# 和 Razor 模板的 Swagger 规范代码生成器。

简介AutoRest工具生成用于访问 RESTful Web 服务的客户端库。AutoRest是使用OpenAPI 规范格式描述 REST API 的规范。AutoRest 是一个提供代码生成框架的工具&#xff0c;用于将 OpenAPI 2.0 和 3.0 规范转换为客户端库&#xff0c;用于这些规范所描述的服务。它是在 OpenAPI I…

java内存四大区,jvm基础-内存区域

1.运行时数据区java虚拟机在执行java程序的过程中会爸它所管理的内存分为若干个不同的数据区域jvm内存主要分为堆、程序计数器、方法区、虚拟机栈喝本地方法栈&#xff0c;直接内存等。java方法的运行和虚拟机栈虚拟机栈是线程运行java方法所需要的数据&#xff0c;指令&#x…

【ArcGIS遇上Python】ArcGIS Python实现批量化矢量和栅格数据重命名

在ArcGIS中,要为矢量数据或栅格数据重命名,需要到ArcCatalog中进行,但是只能一个个重命名。ArcGIS中也提供了矢量、栅格数据的重命名工具:【重命名】,如下图所示: 双击运行该工具,可以看到,更改数据集的名称。这包括各种数据类型,其中包括要素数据集、栅格、表 和 sha…

电脑测速软件_网速慢,怎么办,教你测速,教你解决方案

网速慢、网页慢、视频卡、游戏卡&#xff0c;如何判断自己的宽带速率是否有问题&#xff0c;本期我们来讨论下&#xff0c;如何正确测试网速&#xff0c;信道干扰、2.4G与5G信号、IPTV测速。一、电脑测速受到无线环境影响&#xff0c;无线性能瓶颈等多方面原因&#xff0c;电脑…

Xamarin效果第十六篇之GIS添加Mark

在前面几篇文章中简单玩耍了一下在线和离线加载高德地图图层;今天再次完善一下添加Mark图层和展示详细信息弹窗;来看看最终效果:添加Mark无非就是用了PictureMarkerSymbol:PictureMarkerSymbol picMarkSymbol await GetPictureMarker(); MapPoint mapPoint new MapPoint(foot…

Android规范发展

一、Android 编码规范 1.java 代码中不出现中文。最多凝视中能够出现中文 2.局部变量命名、静态成员变量命名 仅仅能包括字母&#xff0c;单词首字母出第一个外&#xff0c;都为大写&#xff0c;其它字母都为小写 3.常量命名 仅仅能包括字母和_&#xff0c;字母所有大写&#x…

js input 自动换行_矿用自动灭火装置水基型自动灭火装置原理国内分析研讨_搜狐汽车...

山 东潍坊九通消防科技(九通长胜)是国内最早针对矿用车辆发动机舱自动灭火的要求研发设计的超细干粉、水基型自动灭火装置是当下国内解决矿用车辆(地表车辆、井下车辆)灭火的非常好的技术&#xff0c;目前在掘进机、凿岩台车、皮卡、吉普车、轻卡、巨无霸、电传动汽车、露天矿山…

关于WannaCry勒索病毒 你需要知道的8个问题

近日来&#xff0c;WannaCry勒索病毒席卷全球&#xff0c;超过150个国家至少30万名用户中招&#xff0c;造成损失达80亿美元(约合人民币550亿元)。 目前&#xff0c;多名网络安全专家指出&#xff0c;目前病毒事态只是由于多种原因而稍显缓和&#xff0c;但许多网络用户特别是中…