舟山网站建设有哪些,极简wordpress,深圳市门户网站建设哪家好,营销服务机构有哪些前言平时工作中很少用到需要发邮件的功能#xff0c;所以邮件这块的功能也没有太过关注。近期有一个项目需要接收用户的反馈#xff0c;上边决定使用邮件#xff0c;直接将反馈信息发送给领导#xff0c;也就有了这篇文章。实现发邮件不难#xff0c;但是开发中遇到了一个… 前言平时工作中很少用到需要发邮件的功能所以邮件这块的功能也没有太过关注。近期有一个项目需要接收用户的反馈上边决定使用邮件直接将反馈信息发送给领导也就有了这篇文章。实现发邮件不难但是开发中遇到了一个问题就是本地测试都是好好的结果部署到阿里云服务器后邮件总是发送失败经过一番的折腾终于找到了问题特此记录。一、安装需要的类库我这边使用的 .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.ConfigureEmailOptions(Configuration.GetSection(EmailOptions));services.AddMailKit(optionBuilder {optionBuilder.UseMailKit(new MailKitOptions(){//get options from sercets.jsonServer Configuration.GetValuestring(EmailOptions:Host),Port Configuration.GetValueint(EmailOptions:Port),SenderName Configuration.GetValuestring(EmailOptions:SenderName),SenderEmail Configuration.GetValuestring(EmailOptions:FromAddress),// can be optional with no authentication Account Configuration.GetValuestring(EmailOptions:UserName),Password Configuration.GetValuestring(EmailOptions:Password),// enable ssl or tlsSecurity true});});三、发送邮件将配置EmailOptions和 IEmailService 注入到需要使用的位置。如public class HomeController : Controller{private readonly EmailOptions options;private readonly IEmailService _EmailService;public HomeController(IOptionsEmailOptions options, IEmailService emailService){this.options options.Value;_EmailService emailService;}[HttpPost]public async TaskActionResult 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端口发送邮件。