nodejs使用nodemailer发送邮件

1,148 阅读1分钟

安装依赖

npm i -S nodemailer

编写配置文件

获取邮箱配置可参考下文FAQ

// ~/src/config/email
export default {
  // SMTP服务器域名, 网易邮箱填 smtp.163.com; 其他邮箱按实际情况填写
  host: 'smtp.163.com',
  // 连接端口号, 使用ssl安全连接为465; 非ssl为25
  port: 465,
  // 是否使用ssl
  secure: true,
  // 邮箱账号
  user: '******@163.com',
  // 授权密码
  pass: '********'
}

封装类

import nodeMail, { SendMailOptions } from 'nodemailer'

import mailConfig from '~/src/config/email'

const { host, port, user, pass } = mailConfig

const transporter = nodeMail.createTransport({
  host,
  port,
  // 使用ssl
  secure: true,
  auth: {
    user: user,
    pass: pass,
  },
  tls: { rejectUnauthorized: false },
})

class Transporter {
  /**
   * 发送邮件
   * @param options
   */
  static async sendEmail(options: SendMailOptions) {
    return transporter.sendMail({
      // 邮件发送方 
      from: mailConfig.from,
      ...options,
    })
  }
}

export default Transporter

使用

import Transporter from '~/src/library/email'

const sentMessageInfo = await Transporter.sendEmail({
	// 邮件接收方
    to: ['********@qq.com'],
    // 邮件标题
    subject: '河图验证码',
    text: '',
    // 邮件正文
    html: `您的验证码为: ******`,
})

FAQ

1. 如何使用免费邮箱发送邮件

下文以网易邮箱为例, 其他邮箱配置过程类似

登录网易邮箱, 进入邮箱中心

开启SMTP, 获取授权密码

将配置保存到上文的配置文件中