thinkjs 发送邮件
项目中发送邮件是很常用的功能,今天记录一下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 时加第二个参数 模块名
即可,详情可参考官方文档。
注意事项
配置文件中配置的邮箱,和 发件人,要保持一致,不然会报错。
参考链接
本作品采用《CC 协议》,转载必须注明作者和本文链接