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


163邮箱端口号

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

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

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

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

<完>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容