使用nodemailer批量发送邮件

使用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 " ', // 发件人地址,也可是简单的只有 [email protected]
    to: '[email protected], [email protected]', // 收件人列表,以逗号隔开
    subject: 'Hello ✔', // 标题栏内容
    text: 'Hello world? ', // 纯文本格式
    html: 'Hello world?' // 网页格式  主题内容选纯文本或网页都可以,但是网页排版格式要好些。
}

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邮箱正确的端口号请看下图


使用nodemailer批量发送邮件_第1张图片
163邮箱端口号

Connection closed
不知道啥原因,没处理,不知道怎么就好了。

Error: Invalid login: 535 Error: authentication failed授权失败

如果你确认账号密码都没问题。。。

请把密码改为授权码。。。。

<完>

你可能感兴趣的:(使用nodemailer批量发送邮件)