我在 render.com 上运行 Express JS 服务器,负责触发对电子邮件服务的 SMTP 调用。电子邮件服务托管在 one.com(具有自定义域)。
我正在使用 nodemailer 来处理我的 SMTP 调用,如下所示:
app.post("/send-mail", validate(schema), (req, res) => {
console.log("sending email...");
let transporter = nodemailer.createTransport({
host: process.env.REACT_APP_HOST,
port: process.env.PORT,
auth: {
user: process.env.REACT_APP_EMAIL_LOGIN,
pass: process.env.REACT_APP_EMAIL_PASS,
},
});
在本地运行 Express JS 服务器时效果很好 - 我成功收到了测试电子邮件。但是一旦我从 Render.com 执行相同操作,我就会收到超时错误:
Error: Connection timeout
at SMTPConnection._formatError (/opt/render/project/src/node_modules/nodemailer/lib/smtp-connection/index.js:790:19)
at SMTPConnection._onError (/opt/render/project/src/node_modules/nodemailer/lib/smtp-connection/index.js:776:20)
at Timeout.<anonymous> (/opt/render/project/src/node_modules/nodemailer/lib/smtp-connection/index.js:235:22)
at listOnTimeout (node:internal/timers:573:17)
at process.processTimers (node:internal/timers:514:7) {
code: 'ETIMEDOUT',
command: 'CONN'
}
不确定是什么问题。应该尝试将域名转移到另一个域名提供商,还是 Render.com 有问题?
我尝试在 Render.com 上运行 Express JS 服务器,并期望 SMTP 调用会成功,就像从本地主机触发时一样。设置完全相同,但我得到两个不同的结果。
我通过实现不同的 SMTP 提供程序找到了一个解决方案,而不是使用 nodemailer,我使用 sendgrid.com 并且现在一切正常。