特点

CabloyJS内置了邮件发送模块a-mail,对当前最流行的nodemailer进行了封装,具有以下特点:

  • 更简洁的配置和Api调用
  • 采用队列发送邮件
  • 失败自动重发
  • 基于场景配置邮件账号
  • 内置测试账号,便于开发调试

场景与邮件账号

CabloyJS基于场景配置邮件账号,从而支持更灵活的业务需求。CabloyJS内置两个场景

名称 说明
system 系统场景。比如认证模块就会使用此场景的邮件账号发送确认邮件
test 测试场景。此场景采用nodemailer内置的测试账号发送邮件,并且自动把邮件URL链接打印到控制台,从而便于开发调试

若需要增加其他场景,直接修改模块Config配置即可

Config配置

a-mail/backend/src/config/config.js

// scenes
config.scenes = {
  system: {
    transport: {
      host: '',
      port: 0,
      secure: false,
      auth: {
        user: '',
        pass: '',
      },
      logger: false,
      debug: false,
    },
    defaults: {
      from: '',
    },
  },
};
  • transport
名称 说明
host 邮件发送服务器的域名或IP
port 邮件发送服务器的端口号
secure 是否使用TLS用于安全连接
auth.user 用户名
auth.pass 密码
logger 是否打印日志
debug 是否打印详细的SMTP通讯信息
  • defaults
名称 说明
from 缺省的邮件from字段

nodemailer还支持其他字段,也可在Config配置中设置,具体请参考:SMTP TRANSPORT

Api调用

src/module/test-party/backend/src/controller/test/feat/sendMail.js

async sendMail() {
  // send
  await this.ctx.meta.mail.send({
    scene: 'test',
    message: {
      to: 'test@cabloy.com',
      subject: 'this is a test',
      text: 'message body!',
    },
  });
  // done
  this.ctx.success();
}
名称 说明
scene 场景值
message.to 邮件的to字段
message.subject 邮件的subject字段
message.text 邮件的text字段

message还可传入其他字段,具体请参考:MESSAGE CONFIGURATION