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是加第二个参数,模块名即可,详情可参考官方文档。

注意事项

配置文件中配置的邮箱,和 发件人,要保持一致,不然会报错。

参考链接

Last modification:December 1st, 2019 at 01:11 am
如果觉得我的文章对你有用,请随意赞赏

Leave a Comment