邮件发送服务
启用了邮箱地址验证(EnableUserEmailVerification) 后,就需要有邮件发送功能。
QuickAdmin.Net 内设计了邮件服务接口 IEmailService 及抽象基类 EmailService,可通过继承该抽象基类快速实现自己的邮件发送服务。
使用内置的邮件发送服务
QuickAdmin.Net 内置了一个基于 SmtpClient 实现的邮件发送服务类 SmtpClientEmailService 并被默认使用。
在 QuickAdmin.json 文件里配置好 SMTP 后, 即可进行邮件验证码的发送。以 QQ 邮箱为例,开通 QQ 邮箱的 SMTP 后:
{
...
"SMTP": {
"Host": "smtp.qq.com",
"Port": 587,
"FromEmail": "你的QQ号码@qq.com",
"Password": "开通 SMTP 时设置的授权码"
},
...
}
自行实现邮件发送服务
从 EmailService 继承并实现一下 OnSendCodeAsync。
using QuickAdmin.Service.Auth;
public class MyEmailService : EmailService
{
protected override async Task<IServiceResult> OnSendCodeAsync(int purpose, string email, string code)
{
// 当前 purpose == 1 表示正在绑定邮箱
// email 已被前置代码检查过了,必定是一个有效的邮箱地址
...
if (failed)
return ServiceResult.Failed("xxxx"); // 注意错误消息会返回给前端,因此不要返回敏感信息
return ServiceResult.Ok();
}
}
...
// 在启动时注册服务(必须在调用 AddQuickAdmin 之后去注册):
builder.Services.AddSingleton(typeof(IEmailService), typeof(MyEmailService));
...
基类里的其它方法:
CheckEmailAsync:可重写此方法来屏蔽某些邮箱地址。
BeforeSendAsync:基类此方法已实现对发送间隔的控制,一分钟内只能发送一条邮件。
