项目中发送邮件是很常用的功能,今天记录一下thinkjs中发送邮件的实现。
安装依赖
npm install think-email -save
think-email
是基于nodemailer
实现的thinkjs中的拓展包,可以在thinkjs中方便快速的使用。
配置发送邮件信息
配置文件 src/config/config.环境变量.js
or src/comon/config/config.环境变量.js
中添加如下代码:
之所以写在环境变量文件中,是因为涉及到私密信息
module.exports = {
workers: 0,
// ......
email: {
transport: {
service: '126',
auth: {
user: 'xxx@126.com', # 你的邮箱账号
pass: '******' # 你的邮箱账号密码
}
}
}
};
新增email.js
控制器
module.exports = class extends Base {
/**
* 初始化发送邮件参数
* @returns
*/
initTransport() {
const emailConfig = this.config('email');
return emailConfig.transport;
}
/**
* 发送邮件验证码
* @param to 发给谁
* @param subject 标题
* @param html 内容
* @returns {Promise<void>}
*/
async sendEmailCode(to, subject, html) {
const transport = this.initTransport();
await this.sendEmail(transport, {
from: transport.auth.user,
to,
subject,
html
});
}
};
使用
在需要发送邮件验证码的地方,调用emai.js
控制器的sendEmailCode
方法即可。
如果是单模块项目,使用如下:
const emailCtrl = this.controller('email');
await emailCtrl.sendEmailCode(email, '邮箱标题', '邮箱内容');
如果说是多模块,只需要在上面代码中的第一行调用controller是加第二个参数,模块名即可,详情可参考官方文档。
注意事项
配置文件中配置的邮箱,和 发件人,要保持一致,不然会报错。
参考链接
版权属于:老君
本文链接:https://yaimeet.com/thinkjs/thinkjs-email.html
本站文章采用 知识共享署名4.0 国际许可协议 进行许可,请在转载时注明出处及本声明!