Node.js nodeEmailer:ECONNREFUSED

Node.js nodeEmailer:ECONNREFUSED,node.js,nodemailer,Node.js,Nodemailer,我不知道我遗漏了什么,我使用了NodeEmailer示例: var nodemailer = require("nodemailer"); // create reusable transport method (opens pool of SMTP connections) var smtpTransport = nodemailer.createTransport("SMTP",{ service: "Gmail", auth: { user: "gmail

我不知道我遗漏了什么,我使用了NodeEmailer示例:

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
});

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

这是防火墙问题。原来代码没有问题,我只是不明白错误消息意味着什么。

Econrefused指出这是某种连接或防火墙问题

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

openssl s_client -connect smtp.gmail.com:465

我还使用gmail帐户发送电子邮件,您可能需要谷歌提供特定于应用程序的密码,才能让NodeEmailer正常工作


如果您使用新的NodeEmailer版本

nodemailer.createTransport({
    host,
    port,
    secure:,
    auth:{
        user,
        pass
    }
})
更多信息请参见以下步骤:

  • 登录gmail帐户

  • 在“设置”选项卡中启用pop3

  • 在以下位置启用不太安全的应用程序:

  • 在以下位置显示解锁验证码:

  • 已定义的电子邮件选项和发送

    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);
    });
    

  • 希望这段代码对您有所帮助。

    在我的情况下,我只需禁用我的防病毒软件Avast

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

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

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

    2) 转到常规选项卡->异常->添加异常

    3) 获取你的gmail的IP地址,我想会有错误的。

    4) 现在将IP粘贴到您的异常上


    希望有帮助。

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

                var transporter = nodemailer.createTransport({
                    service: process.env.EMAIL_SERVICE,
                    auth: {
                        user:process.env.EMAIL_USER,
                        pass:process.env.EMAIL_PASSWORD
                    }
                })
    
    防火墙问题 要阻止防火墙以发送电子邮件,您需要允许端口或禁用所有端口

    允许特定端口:

    $ sudo ufw allow 587
    
    禁用防火墙

    $ sudo ufw disable
    
    $ sudo ufw reset
    

    你已经从那个账户发过电子邮件了吗?如果你有,请注意,GMail SMTP是受限制的-你只能从一个帐户在给定的一天发送几百封电子邮件。不,我创建帐户只是为了测试这是否有效。我刚刚从它那里发了我的第一封电子邮件给我自己,我收到了它。然后我再次尝试我的程序,仍然说连接被拒绝。我想评论一下,我已经尝试了sudo。你用过NodeEmailer吗@塞巴斯蒂亚尼已经很长时间没有使用它了,当我使用它的时候,我所有的问题都是因为我达到了Gmail的发送电子邮件限制。您是否尝试过不使用Gmail快捷方式,并键入完整的SMTP地址和所有内容(如此处所述:)?EconRefused InIDC表明这是某种连接或防火墙问题。您是否可以使用同一台计算机上的任何其他应用程序连接到smtp.gmail.com端口465,例如使用openssl:
    openssl s_客户端-连接smtp.gmail.com:465
    这应该是一条注释我遇到了相同的问题。我可以在同一台机器上使用gmail,那么为什么防火墙会阻止nodemailer呢?此外,我还没有在gmail中设置两步验证,因此我认为不需要应用程序特定的密码。请您进一步解释一下?对于那些使用
    secure:false
    的用户,请签出此链接:
    $ sudo ufw disable
    
    $ sudo ufw reset