当我尝试发送电子邮件时,ESOCKET错误是什么意思?

时间:2019-05-15 10:45:57

标签: node.js nodemailer

我正在尝试使用nodemailer发送电子邮件。

在我的局域网中,有一个SMTP服务器在端口25上侦听。如果使用telnet,它可以正常工作。

我的js脚本是:

this.transporter.sendMail(mailOptions, function (error, info) {
        if (error) {
            console.log(JSON.stringify(error));
            return callback(error, null);
        }

        console.log(JSON.stringify(info));

        return callback(null, true);
});

它仅打印:{“代码”:“ ESOCKET”,“命令”:“ CONN”}。什么意思?

预先感谢

1 个答案:

答案 0 :(得分:1)

https://github.com/nodemailer/nodemailer/issues/889#issuecomment-488267379(及其后续):

  

这里有同样的问题。通过使用IP地址作为主机来解决它,请参阅   https://nodemailer.com/smtp/#general-options

对我们来说,这似乎与节流有关,因为大约有140条消息被批量处理,而其余消息都收到此错误(并且所有消息都发送到了相同的电子邮件地址,因此没有问题:错误的电子邮件地址)。更改为IP不能解决问题(也许是因为SMTP在AWS上?)。

最终为我们工作的是-https://stackoverflow.com/a/55187729/235704

  

以下代码更改解决了该问题。将此添加到   createTransport()

tls: {rejectUnauthorized: false}
     

代码:-

// create reusable transporter object using the default SMTP transport
let transporter = nodemailer.createTransport({
    host: 'host',
    port: 25,
    secure : false, // true for 465, false for other ports
    auth: {
        user: 'user',
        pass: 'password'
    },
    tls: {
        // do not fail on invalid certs
        rejectUnauthorized: false
    },
});

在我们的提供商的情况下,他们的证书似乎并不涵盖他们在AWS上提供的所有IP。