web-dev-qa-db-ja.com

Nodemailer:ECONNREFUSED

何が欠けているのかわかりません。Nodemailerの例を使用します。

var nodemailer = require("nodemailer");

// create reusable transport method (opens pool of SMTP connections)
var smtpTransport = nodemailer.createTransport("SMTP",{
    service: "Gmail",
    auth: {
        user: "[email protected]",
        pass: "userpass"
    }
});

// setup e-mail data with unicode symbols
var mailOptions = {
    from: "Fred Foo ✔ <[email protected]>", // sender address
    to: "[email protected], [email protected]", // list of receivers
    subject: "Hello ✔", // Subject line
    text: "Hello world ✔", // plaintext body
    html: "<b>Hello world ✔</b>" // html body
}

// send mail with defined transport object
smtpTransport.sendMail(mailOptions, function(error, response){
    if(error){
        console.log(error);
    }else{
        console.log("Message sent: " + response.message);
    }

    // if you don't want to use this transport object anymore, uncomment following line
    //smtpTransport.close(); // shut down the connection pool, no more messages
});

ユーザーを変更して、Gmailアカウント情報に認証を渡し(値も試してみました)、「宛先」のメールアドレスを自分のメールアドレスに変更しました。私は得る:

{ [Error: connect ECONNREFUSED]
  code: 'ECONNREFUSED',
  errno: 'ECONNREFUSED',
  syscall: 'connect' }

何が足りないのですか?これ以上のことをする必要があるというドキュメントには何も表示されないのに、なぜ機能しないのですか?前もって感謝します。

11
user1756980

ファイアウォールの問題でした。コードに問題はなかったことがわかりました。エラーメッセージが何を意味するのか理解できませんでした。

8
user1756980

次のステップ:

  1. Gmailアカウントにログインします。

  2. 設定タブでpop3を有効にする

  3. 安全性の低いアプリを有効にする: Gmailアカウントの安全性の低いアプリを有効にする

  4. Unlock Captchaの表示: nlock Captchaの表示

  5. 定義された電子メールオプションと送信

    var mailOptions = {
        Host: 'smtp.gmail.com',
        port: 465,
        secure: true, // use SSL
        auth: {
            user: '[email protected]',
            pass: 'password'
        }
    }    
    
    mailer = nodemailer.createTransport(mailOptions);
    
    mailer.sendMail({
    ....
    }, function(err, response) {
            if (err) {
                 console.log(err);
            }
            console.log(response);
    });
    

このブロックコードがお役に立てば幸いです。

3
IT Vlogs

また、Gmailアカウントを使用してメールを送信していました。ノードメーラーが正しく機能するには、Googleからのアプリケーション固有のパスワードが必要になる場合があります。

https://support.google.com/mail/answer/1173270?hl=en

2
brendecimus

ECONNREFUSEDは、これが何らかの接続またはファイアウォールの問題であることを示しています。

同じマシンからの他のアプリケーション、たとえばopensslを使用してsmtp.gmail.comポート465に接続できますか?

openssl s_client -connect smtp.gmail.com:465
1
Rudolf Olah

新しいnodemailerバージョンを使用する場合

nodemailer.createTransport({
    Host,
    port,
    secure:,
    auth:{
        user,
        pass
    }
})

詳細は https://github.com/andris9/nodemailer-wellknown を参照してください

0
boneyao

私の場合、アンチウイルスのアバストを無効にする必要がありました。

アバストのホワイトリストにこれを行います:

これらの手順は、ここで使用されているIPを含め、アバストのバージョンによって異なる場合があります

1)アバストを開き、メニュー->設定に移動します。 (右上隅にあります)

2)[全般]タブ-> [例外]-> [例外の追加]に移動します

enter image description here

3)GmailのIPを取得します。エラーが発生すると思います。 enter image description here

4)例外にIPを貼り付けます enter image description here

それが役に立てば幸い。

0
Alex

実際の問題の修正は、[〜#〜] service [〜#〜]を配置する必要があることです。 ENVIRONMENTVARIABLESを使用するとより良い

            var transporter = nodemailer.createTransport({
                service: process.env.EMAIL_SERVICE,
                auth: {
                    user:process.env.EMAIL_USER,
                    pass:process.env.EMAIL_PASSWORD
                }
            })
0
Alex Hunter