使用nodemailer批量发送邮件
1. 引入头文件
const mailer = require('nodemailer');
const smtpTransport = require('nodemailer-smtp-transport');
2. 创建发送对象
const transporter = mailer.createTransport(smtpTransport({
pool: true,
host: 'smtp.163.com',
port: 465,
secure: true, // use TLS使用HTTPS port可以是 465 也可以是 994
auth: {
user: 'username',
pass: 'password'//密码或授权码
}
}));
3. 创建发送选项
可以使用fs读取本地HTML文件,这样排版会好一些。
const mailOptions = {
from: '"Fred Foo 👻" <foo@blurdybloop.com>', // 发件人地址,也可是简单的只有 foo@blurdybloop.com
to: 'bar@blurdybloop.com, baz@blurdybloop.com', // 收件人列表,以逗号隔开
subject: 'Hello ✔', // 标题栏内容
text: 'Hello world? ', // 纯文本格式
html: '<b>Hello world?</b>' // 网页格式 主题内容选纯文本或网页都可以,但是网页排版格式要好些。
}
4. 发送邮件可以使用Promise来让代码逻辑更清晰
async function sendEmails(transporter,mailOptions) {
try {
const verifypass = await transporter.verify();//验证邮件发送者transporter是否配置正确
const sendSucess = await transporter.sendMail(mailOptions);//配置无误,发送发送邮件
if (sendSucess) {
console.log('发送成功');
}
} catch (error) {
console.log(error);
}
}
sendEmails(transporter,mailOptions);
可能遇到的问题:
Error: connect ETIMEDOUT 220.181.12.14:465
Error: connect ETIMEDOUT 220.181.12.14:587
出现上述错误,也可能不是防火墙的问题,而是端口号写错了。
163邮箱正确的端口号请看下图
Connection closed
不知道啥原因,没处理,不知道怎么就好了。
Error: Invalid login: 535 Error: authentication failed
授权失败
如果你确认账号密码都没问题。。。
请把密码改为授权码。。。。
<完>