web-dev-qa-db-ja.com

エラー:ECONNREFUSED 127.0.0.1:465 nodemailerを接続してください

Gmailアカウントを使用して、SMTPアラートメッセージをユーザーのメールに送信していました。例、登録またはアカウントのブロックなど。私は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
});

ちょうど昨日、Google for Businessアカウントに@mydomainアカウントにサインアップし、次にgmailを新しいgoogle for businessメールに置き換えます。

var smtpTransport = nodemailer.createTransport("SMTP",{
    service: "Gmail",
    auth: {
        user: "[email protected]",
        pass: "userpass"
    }
});

問題は、新しいアカウントでメールを送信しないことです。むしろコンソールにタイトルの付いたエラーを返しました。新しいアカウントのセキュリティを変更して、Googleコンソールから安全性の低いアプリをすべて許可しないようにしました。このエラーは何を意味していますか?また、メールのユーザー名とパスワードが使用されていることを考慮すると、それが最良のオプションですか?どうすれば最良の結果が得られますか?任意の助けいただければ幸いです。

9
Nuru Salihu

お時間ありがとうございました。以下は私のために働くものです。

nodemailer.createTransport('smtps://user%myDomain.com:[email protected]');

に変わった

var smtpConfig = {
    Host: 'smtp.gmail.com',
    port: 465,
    secure: true, // use SSL
    auth: {
        user: '[email protected]',
        pass: 'pass@pass'
    }
};
var transporter = nodemailer.createTransport(smtpConfig);

上記の例をドキュメント https://github.com/nodemailer/nodemailer で見つけました。 uとsmtpsリンクを考慮して、パスワードに@記号が含まれている場合、これが起こったのではないかと思います。したがって、@記号がsmtps URLに干渉しないように、オブジェクトに分割することをお勧めします。これは私の推測です。それにもかかわらず、上記の解決策は私にとってはうまくいきます。さらに、Googleコンソールから安全性の低いアプリを許可することを忘れないでください。

12
Nuru Salihu

Bluehostを使用するすべてのユーザーのために、Bluehostの構成を追加します。

_let transporter = nodemailer.createTransport({
    Host: 'box1109.bluehost.com',
    port: 465,
    secure: true,
    auth: {
        user: '[email protected]',
        pass: 'yourpassword'
    }
});
_

verify()メソッドを使用してオプションを確認できます。

_transporter.verify((err, success) => {
    if (err) console.error(err);
    console.log('Your config is correct');
});
_

このエラーが発生している場合は、Hostプロパティが正しく設定されていることを確認してください。

_console.log(transporter.options.Host);
_

このエラーに20分間費やして、Hostプロパティが未定義であることを確認しました(環境変数を使用して構成に移植していました)。

0
Zach Gollwitzer