Node.js

Node.js使用nodemailer发送邮件

2018-08-15  本文已影响47人  不进则退

使用场景: 服务器出错之后自动发送邮件到指定邮箱, 从而达到异常监控通知的效果

举例: 使用我的qq邮箱发送到我的163邮箱

1. nodemailer是第三方库, 需要安装

npm install nodemailer

2. 代码实操

// 封装邮件发送接口
const nodemailer = require('nodemailer');

// 开启一个SMTP连接
let transporter = nodemailer.createTransport({
    // host: 'smtp.qq.com',
    service: 'qq', // 需要到qq邮箱设置开通SMTP, 查看支持的邮件服务商列表 https://nodemailer.com/smtp/well-known/
    port: 465, // SMTP 端口
    secureConnection: true, // 使用了SSL
    secure: true, // true for 465, false for other ports
    auth: {
        user: 'xxxxxx@qq.com',
        pass: 'xxxxxx' // 这里密码不是qq密码,是你设置的smtp授权码
    }
})

// 填写邮件信息
let mailOptions = {
    from: '"D罗" <xxxxxx@qq.com>', // 发件人
    to: 'xxxxxx@163.com', // 收件人
    subject: '', // 标题
    // 发送text或者html格式
    text: '', // plain text body 文本格式的内容
    html: '' // html body HTML格式的内容
};

// 使用前面创建的传输器来发送邮件
let send = function (subject, content, flag) {
    if (subject && content) {
        mailOptions.subject = subject;
        if (flag === 'html') {
            mailOptions.html = content;
        }else
        {   // 默认不传flag发送text
            mailOptions.text = content;
        }
        transporter.sendMail(mailOptions, (error, info) => {
            mailOptions.text = '';
            mailOptions.html = '';
            console.log(`Message: ${info.messageId}`);
            console.log(`sent: ${info.response}`);
        })
    }
};

// 将send方法通过exports暴露出来, 便于其他模块调用
exports.send = send;

// 测试发送邮件
// send('这是邮件标题', '这是邮件内容-文本')
// send('这是邮件标题', '<b>这是邮件内容-html</b>', 'html')

3. 更多配置

// 只需添加attachments配置项即可
attachments: [
    {   // utf-8 string as an attachment
      filename: 'demo.txt',
      content: 'hello world!'
    },
    {
      filename: 'demo.png',
      path: path.resolve(__dirname, 'demo.png'),
    }
  ]
上一篇 下一篇

猜你喜欢

热点阅读