loading...

3

Node.js使用nodemailer发送邮件

node读完大概需要7分钟

  • 发布时间:2019-01-28 23:31 星期一
  • 刘伟波
  • 979
  • 更新于2019-01-28 23:34 星期一

使用场景: 服务器出错之后自动发送邮件到指定邮箱, 从而达到异常监控通知的效果
举例: 使用我的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. 更多配置

CC: Carbon Copy(抄送),用于通知相关的人,收件人可以看到都邮件都抄送给谁了。一般回报工作或跨部门沟通时,都会CC给收件人的领导一份
BCC:Blind Carbon Copy(暗抄送),也是用于通知相关的人,但是收件人是看不到邮件被密送给谁了。
attachments: 附件
更多配置项:https://nodemailer.com/message/
这里我们就不演示CC、BCC了,请自行尝试。我们来试试发送附件

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

--
作者:刘伟波

链接:http://www.liuweibo.cn/p/246

来源:刘伟波博客

本文原创版权属于刘伟波 ,转载请注明出处,谢谢合作

你可能感兴趣的文章

    发表评论

    评论支持markdown,评论内容不能超过500字符
    关于技术问题或者有啥不懂的都可以来 我的视频空间 提问, 推荐作者总结知识点 前端知识体系, 感謝支持!

    学习了。。。