Nodemailer:ECONNREFUSED

时间:2013-02-01 20:48:00

标签: node.js nodemailer

我不知道我缺少什么,我使用Nodemailer示例:

var nodemailer = require("nodemailer");

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

// setup e-mail data with unicode symbols
var mailOptions = {
    from: "Fred Foo ✔ <foo@blurdybloop.com>", // sender address
    to: "bar@blurdybloop.com, baz@blurdybloop.com", // 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
});

我刚刚更改了用户并将auth传递给我的gmail帐户信息(也尝试了他们的值),然后我将“更改”电子邮件地址更改为我的电子邮件地址。我明白了:

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

我错过了什么?我没有在文档中看到任何说明我需要做更多的事情,所以为什么它不起作用?提前谢谢。

8 个答案:

答案 0 :(得分:6)

这是一个防火墙问题。事实证明代码没有任何问题,我只是不明白错误信息的含义。

答案 1 :(得分:3)

以下步骤:

  1. 登录Gmail帐户。

  2. 在设置标签中启用pop3

  3. Enable less secure apps for gmail account

  4. 启用安全性较低的应用
  5. Display unlock Captcha

  6. 显示解锁验证码
  7. 定义电子邮件选项并发送

    var mailOptions = {
        host: 'smtp.gmail.com',
        port: 465,
        secure: true, // use SSL
        auth: {
            user: 'gmail_account@gmail.com',
            pass: 'password'
        }
    }    
    
    mailer = nodemailer.createTransport(mailOptions);
    
    mailer.sendMail({
    ....
    }, function(err, response) {
            if (err) {
                 console.log(err);
            }
            console.log(response);
    });
    
  8. 希望这个区块代码可以帮助您。

答案 2 :(得分:2)

我还使用gmail帐户发送电子邮件,您可能需要Google提供的特定于应用程序的密码才能让nodemailer正常运行。

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

答案 3 :(得分:0)

ECONNREFUSED表示这是某种连接或防火墙问题。

您是否可以使用同一台计算机上的任何其他应用程序连接到smtp.gmail.com端口465,例如使用openssl?

openssl s_client -connect smtp.gmail.com:465

答案 4 :(得分:0)

如果您使用新的nodemailer版本

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

更多请参阅https://github.com/andris9/nodemailer-wellknown

答案 5 :(得分:0)

就我而言,我只需要禁用我的反病毒软件Avast。

要在avast上添加白名单,请执行以下操作:

这些步骤可能会因您的Avast版本(包括此处使用的IP)而异

1)打开Avast,转到:菜单->设置。 (位于右上角)

2)转到“常规”标签->“例外”->“添加例外”

enter image description here

3)获取您的gmail的IP,我想这将是错误。 enter image description here

4)现在在您的异常上粘贴IP enter image description here

希望有帮助。

答案 6 :(得分:0)

实际的问题解决方法是您需要放置服务。如果您使用环境变量

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

答案 7 :(得分:0)

防火墙问题

要阻止防火墙发送电子邮件,您需要允许端口或禁用所有端口。

允许特定端口:

<script type="text/javascript">
   var term = "my text";
   $('#test').html(function () {
     return $(this).html().replace(new RegExp(term + "(?=[^>]*<)","ig"), "<mark>$&</mark>");
   });
</script>

禁用防火墙

$ sudo ufw allow 587