官网
https://www.cnblogs.com/jackson-yqj/p/10154296.html
获取qq邮箱授权码, 需要使用手机发送短信
发送成功
安装, 这里使用yarn安装时出现了错误, 换成npm就ok了
cnpm i nodemailer -D
官方案例
发送qq邮件
授权码十分重要, 主要保护好隐私
发送多个邮箱时, 使用的是字符串拼接, 而不是数组
可以发送html, 但是图片的话没有测试
https://www.jianshu.com/p/04e596da7d33
const nodemailer = require("nodemailer");
const _user = '504595380@qq.com'
const _pwd = 'xxx'
async function main() {
let transporter = nodemailer.createTransport({
host: "smtp.qq.com",
port: 465,
secure: true, // true for 465, false for other ports
auth: {
user: _user, // generated ethereal user
pass: _pwd, // generated ethereal password
},
});
let info = await transporter.sendMail({
from: '504595380@qq.com', // sender address
// to: "bar@example.com, baz@example.com", // list of receivers
to: "504595380@qq.com", // list of receivers
subject: "Hello ✔", // Subject line
text: "Hello world?", // plain text body
html: "<b>Hello world?</b>", // html body
});
console.log("Message sent: %s", info.messageId);
console.log("Preview URL: %s", nodemailer.getTestMessageUrl(info));
}
main().catch(console.error);
案例
const nodemailer = require('nodemailer');
// 开启一个 SMTP 连接池
let transporter = nodemailer.createTransport({
host: 'smtp.qq.com',
secureConnection: true, // use SSL
port: 465,
secure: true, // secure:true for port 465, secure:false for port 587
auth: {
user: '80583600@qq.com',
pass: 'xxx' // QQ邮箱需要使用授权码
}
});
// 设置邮件内容(谁发送什么给谁)
let mailOptions = {
from: '"白小明 👻" <80583600@qq.com>', // 发件人
to: 'xx1@qq.com, xx2@qq.com', // 收件人
subject: 'Hello ✔', // 主题
text: '这是一封来自 Node.js 的测试邮件', // plain text body
html: '<b>这是一封来自 Node.js 的测试邮件</b>', // html body
// 下面是发送附件,不需要就注释掉
attachments: [{
filename: 'test.md',
path: './test.md'
},
{
filename: 'content',
content: '发送内容'
}
]
};
// 使用先前创建的传输器的 sendMail 方法传递消息对象
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
return console.log(error);
}
console.log(`Message: ${info.messageId}`);
console.log(`sent: ${info.response}`);
});
来源:oschina
链接:https://my.oschina.net/ahaoboy/blog/4325727