我正在尝试使用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”}。什么意思?
预先感谢
答案 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。