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

注意事项

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

参考链接

如有不对之处,还请不吝指出,非常感谢。

yaimeet
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!