1. ホーム
  2. node.js

[解決済み] メール送信時のESOCKETエラーとはどういう意味ですか?

2022-02-07 22:46:01

質問内容

nodemailerを使用してメールを送信しようとしています。

私のLANでは、ポート25でSMTPサーバーがリッスンしています。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"} とだけ出力されます。これはどういう意味ですか?

ありがとうございました。

解決方法は?

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のすべてをカバーしていないようです。