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