当前位置: 首页 > 知识库问答 >
问题:

在Nodejs Openshift应用程序中使用nodeEmailer时出现ETIMEDOUT连接错误

祝允晨
2023-03-14

我在Openshift中的node.js single gear不可扩展应用程序中使用NodeEmailer模块时遇到了一些问题。正如文档所建议的,我初始化了transporter对象并使用了sendMail函数。我的代码的简化版本是

var transporter = nodemailer.createTransport({
    service: 'Gmail',
    auth: {
        user: 'my.mail@gmail.com',
        pass: 'mypassword'
    }
});

var mail = {
    from: 'my.mail@gmail.com',
    to: 'test@mydomain.com',
    subject: 'Test mail',
    html: 'Test mail'
};

transporter.sendMail(mail, function(error, info) {
    if(error){
        console.log(error);
    }else{
        console.log(info);
    }
});

当我在本地机器上运行这段代码时,它可以正常工作,但是当我试图在服务器上执行它时,我得到了一个ETIMEDOUT错误,好像应用程序无法连接到smtp服务器。

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

我试图增加超时连接参数,但得到了相同的结果。

var transporter = nodemailer.createTransport({
    service: 'Gmail',
    auth: {
        user: 'my.mail@gmail.com',
        pass: 'mypassword'
    },
    connectionTimeout: 5 * 60 * 1000, // 5 min
});

是否有我丢失的防火墙或默认Openshift设置或环境变量?

共有3个答案

苏志
2023-03-14

如果你想从localhost运行这个。

在auth选项后添加以下代码行

 tls:{
        rejectUnauthorized:false
    }

它可以工作,但是您可以考虑升级到XOAuth2,如M.T.Mik.KiWi提出的

单于善
2023-03-14

在我的情况下,问题是与端口我已经改变端口从25到2525和它的工作。

尝试更改端口

张敏达
2023-03-14

我还得再做一些测试,但我想我知道问题出在哪里了。通过用户名和密码进行身份验证对于Gmail来说是一种不安全的身份验证方法。如nodeEmailer文档中所述

尽管Gmail是开始发送电子邮件的最快方式,但除非您使用OAuth2身份验证,否则它决不是一个更好的解决方案。Gmail希望用户是一个真正的用户,而不是一个机器人,因此它会对每一次登录尝试运行大量的启发式算法,并阻止任何看起来可疑的行为,以保护用户免受帐户劫持企图。例如,如果您的服务器位于另一个地理位置,您可能会遇到问题—所有东西都在您的开发机器中工作,但消息在生产中被阻止。

我使用XOAuth2升级了我的授权方法,在本指南中也有解释,现在邮件被正确发送了。

 类似资料:
  • 我在Node.js忘记密码后端路由,我试图使用nodemailer从我从namecheap.com购买的自定义域发送电子邮件,以及电子邮件域。我不确定这是主机、端口/安全还是授权的问题。但是,当我更改主机时,它会给出一个ECONREFUSED错误,所以我相信该部分正在工作。我的防火墙被禁用了(据我所知),我重新启动了,但是很难判断,因为诺顿防病毒软件控制着它。 这是我的代码,取自路由器。在我的后端

  • 我错过了什么?到目前为止,我搜索到的所有答案都建议使用1.2.1,我已经在做了。 任何建议都将不胜感激!

  • 我尝试执行下面的python代码 最后一个语句通过以下连接错误。

  • null 脚本'C:\src\flutter\packages\flutter_tools\gradle\flutter.gradle'行:838 出了什么问题: 任务“:app:CompileFlutterBuildreLease”执行失败。 null null 应用程序:Build.Gradle

  • 当我连续发布数据时,我会在C#应用程序上得到发布超时错误,一旦我重新启动应用程序,它会工作几个小时。[注意:由于php需要时间完成任务,所以新的请求都在等待中,它创建队列,等待时间超过2分钟,im出现超时错误]。 我们的两台服务器都使用了最大50%的CPU和RAM使用量 我检查了两个C#代码和PHP代码都工作良好,没有任何问题或bug 提前致谢哥们儿:)