使用Volo.Abp.MailKit发送邮件
Volo.Abp.MailKit封装继承MailKit库,为Abp邮件发送提供了快捷实现。
邮箱配置
qq邮箱支持smtp功能,需要去申请开通。参考qq邮箱设置,最重要的是smtp发送邮件,qq邮箱对应的密码不是用户的qq邮箱密码,而是需要申请生成的授权码。
在项目的appsettings.json配置文件里,添加如下配置项目。
"Settings": {
"Abp.Mailing.DefaultFromAddress": "xx@qq.com",
"Abp.Mailing.DefaultFromDisplayName": "xx",
"Abp.Mailing.Smtp.Host": "smtp.qq.com",
"Abp.Mailing.Smtp.Port": "587",
"Abp.Mailing.Smtp.Domain": "smtp.qq.com",
"Abp.Mailing.Smtp.UserName": "xx@qq.com",
"Abp.Mailing.Smtp.Password": "xxx",
"Abp.Mailing.Smtp.EnableSsl": "false",
"Abp.Mailing.Smtp.UseDefaultCredentials": "false"
}
注意
Abp.Mailing.Smtp.EnableSsl项目应设置为false。
Abp.Mailing.Smtp.UseDefaultCredentials项目应设置为false。
Abp.Mailing.Smtp.Password应设置为qq邮箱对应的授权码密文。
密文可调用IStringEncryptionService.Encrypt(授权码)获取
发送邮件
在一个后台作业里发送邮件,完整代码如下。
public class EmailSendingJob : BackgroundJob<EmailSendingArgs>, ITransientDependency
{
private readonly IMailKitSmtpEmailSender _emailSender;
public EmailSendingJob(IMailKitSmtpEmailSender emailSender)
{
_emailSender = emailSender;
}
public override void Execute(EmailSendingArgs args)
{
Action action = async () =>
{
await _emailSender.SendAsync(
args.EmailAddress,
args.Subject,
args.Body,
false
);
};
action?.Invoke();
}
}
看看测试效果,邮件正确的发送接收了。
配置邮箱密码使用明文
框架默认EmailSettingProvider设置EmailSettingNames.Smtp.Password的isEncrypted属性默认为true,所以在上面的appsettings.json中需要设置为授权码的密文。
根据官方的文档,我们可以修改EmailSettingNames.Smtp.Password的isEncrypted属性默认为false,这样就可以直接使用授权码明文。
在项目中新建一个MySettingDefinitionProvider文件,并继承自SettingDefinitionProvider类。
public class MySettingDefinitionProvider : SettingDefinitionProvider
{
public override void Define(ISettingDefinitionContext context)
{
var smtpPassword = context.GetOrNull("Abp.Mailing.Smtp.Password");
if (smtpPassword != null)
{
smtpPassword.IsEncrypted = false;
}
}
}
使用Volo.Abp.MailKit发送邮件的更多相关文章
- Volo.Abp.EntityFrameworkCore.MySQL 使用
创建新项目 打开 https://cn.abp.io/Templates ,任意选择一个项目类型,然后创建项目,我这里创建了一个Web Api 解压项目,还原Nuget,项目目录如下: 首先我们来查看 ...
- Magicodes.Pay已支持Volo Abp
Magicodes.Pay已支持Volo Abp 简介 Magicodes.Pay希望打造一个统一支付库,相关库均使用.NET标准库编写,支持.NET Framework以及.NET Core.目前已 ...
- 使用 MimeKit 和 MailKit 发送邮件
MimeKit 给.NET 社区带来了一流的 MIME 解析器,它能处理复杂的各种Mime, 性能好.而且开箱即用支持 S/MIME 和 PGP.MimeKit 和 MailKit 支持最新的国际化的 ...
- [Abp vNext 源码分析] - 20. 电子邮件与短信支持
一.简介 ABP vNext 使用 Volo.Abp.Sms 包和 Volo.Abp.Emailing 包将短信和电子邮件作为基础设施进行了抽象,开发人员仅需要在使用的时候注入 ISmsSender ...
- [Abp 源码分析]五、系统设置
0.简要介绍 Abp 本身有两种设置,一种就是 上一篇文章 所介绍的模块配置 Configuration,该配置主要用于一些复杂的数据类型设置,不仅仅是字符串,也有可能是一些 C# 运行时的一些变量. ...
- ABP官方文档翻译 10.1 ABP Nuget包
ABP Nuget包 Packages Abp Abp.AspNetCore Abp.Web.Common Abp.Web Abp.Web.Mvc Abp.Web.Api Abp.Web.Api.OD ...
- JFinal项目发送邮件——jfinal-mail-plugin
JFianl框架: JFinal 是基于 Java 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速.代码量少.学习简单.功能强大.轻量级.易扩展.Restful.在拥有Java语言所有 ...
- [Abp vNext 源码分析] - 3. 依赖注入与拦截器
一.简要说明 ABP vNext 框架在使用依赖注入服务的时候,是直接使用的微软提供的 Microsoft.Extensions.DependencyInjection 包.这里与原来的 ABP 框架 ...
- [Abp vNext 源码分析] - 1. 框架启动流程分析
一.简要说明 本篇文章主要剖析与讲解 Abp vNext 在 Web API 项目下的启动流程,让大家了解整个 Abp vNext 框架是如何运作的.总的来说 ,Abp vNext 比起 ABP 框架 ...
随机推荐
- springmvc+mybatis 实现登录、注册、邮件激活等功能
原创作品, 转载请注明来源
- Hbase javaAPI报错:Callexception,tries=10,retries=35,started=38465msago
[client.RpcRetryingCaller(142)]Callexception,tries=10,retries=35,started=38465msago,cancelled=false, ...
- Hyperledger Fabric——balance transfer(一)启动示例
Blacne transfer是Hyperledger fabric Node SDK的一个示例应用,主要使用了SDK中fabric-client 和 fabric-ca-client 模块中的API ...
- UVALive3720
题目大意:见刘汝佳<算法竞赛入门经典——训练指南>P173. 解题思路: 问题可以转化为求共有多少条过点阵中的点的斜线.其中必定包含左斜线和右斜线,由于点阵式对称的,所以我们只需求出左右斜 ...
- Poj1328 用雷达覆盖所有的岛屿
(此配图来自http://blog.csdn.net/zhengnanlee/article/details/9613161) 图中ABCD为海岛的位置.题目中会给出几个海岛的坐标位置,雷达覆盖半径d ...
- Java流程控制以及顺序、选择、循环结构
目录 用户交互Scanner Scanner对象 hasNext()与next() hasNextLine()与nextLine() Scanner进阶用法 求和与平均数 顺序结构 选择结构 if单选 ...
- Opencv+Python实现缺陷检测
实验七.缺陷检测 一. 题目描述 对下面的图片进行缺陷检测操作,请详细地记录每一步操作的步骤. 第一站图片是标准样品,后面几张图中有几个样品有瑕疵,需要你通过计算在图片上显示出哪张是合格,哪张 ...
- PHP链式操作原理
1)第一种方法 <?php /* *类功能:实现数据库的连贯查询操作 */ class mysql_query{ var $tbl=’user’;//要操作的表名 var $limit=”;// ...
- MySQL知识-redis实例
规划.搭建过程:6个redis实例,一般会放到3台硬件服务器注:在企业规划中,一个分片的两个分到不同的物理机,防止硬件主机宕机造成的整个分片数据丢失.端口号:7000-7005 # 1. 安装集群插件 ...
- [VuePress]个人博客 -- 批处理自动化编译提交 -- 排错记录
建了一个VuePress的个人博客 想着写个批处理,自动编译并上传到GitHub. 结果遇到两个问题, 一个是,vuepress build docs编译后,这个命令执行完就exit了 研究了下bat ...