当我尝试发送电子邮件时出现 ESOCKET 错误是什么意思?
What does ESOCKET error mean when I'm trying to send an email?
我正在尝试使用 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);
});
它只打印:{"code":"ESOCKET","command":"CONN"}。这是什么意思?
提前致谢
每 https://github.com/nodemailer/nodemailer/issues/889#issuecomment-488267379(并且是 follow-ups):
same problem here. resolved it by using IP address as host, see
https://nodemailer.com/smtp/#general-options
对我们来说,这似乎与节流有关,因为大约有 140 封邮件批量处理,而其余邮件收到此错误(并且所有邮件都被发送到同一个电子邮件地址,所以没有问题回复:错误的电子邮件地址) .更改为 IP 并没有解决问题(可能是因为 SMTP 在 AWS 上?)。
最终对我们有用的是这个 -
The below code change fixed the issue. Added this to the
createTransport()
tls: {rejectUnauthorized: false}
Code:-
// 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。
我正在尝试使用 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);
});
它只打印:{"code":"ESOCKET","command":"CONN"}。这是什么意思?
提前致谢
每 https://github.com/nodemailer/nodemailer/issues/889#issuecomment-488267379(并且是 follow-ups):
same problem here. resolved it by using IP address as host, see https://nodemailer.com/smtp/#general-options
对我们来说,这似乎与节流有关,因为大约有 140 封邮件批量处理,而其余邮件收到此错误(并且所有邮件都被发送到同一个电子邮件地址,所以没有问题回复:错误的电子邮件地址) .更改为 IP 并没有解决问题(可能是因为 SMTP 在 AWS 上?)。
最终对我们有用的是这个 -
The below code change fixed the issue. Added this to the createTransport()
tls: {rejectUnauthorized: false}
Code:-
// 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。