gpt4 book ai didi

javascript - Nodemailer 自定义 SMTP 不适用于 Firebase 功能

转载 作者:行者123 更新时间:2023-12-05 00:55:34 25 4
gpt4 key购买 nike

我有一个错误。我正在使用 nodemailer 从我的 Firebase 应用程序发送电子邮件。

这是我的代码的样子:

const functions = require('firebase-functions');
const admin = require("firebase-admin");
const nodemailer = require('nodemailer');

admin.initializeApp();

//THESE SETTINGS WORK ON LOCAL AND LIVE. BUT I DONT WANT TO USE THEM
// const transporter = nodemailer.createTransport({
// service: 'gmail',
// auth: {
// user: 'GMAIL HERE',
// pass: 'GMAIL PW HERE'
// },
// })

//THESE SETTINGS WORK ON LOCAL, BUT NOT ON LIVE.
const transporter = nodemailer.createTransport({
host: "smtp.mycompanyname.com",
port: 25,
secureConnection: false, // TLS requires secureConnection to be false
logger: true,
debug: true,
secure: false,
requireTLS: true,
auth: {
user: "USERNAME HERE",
pass: "PASSWORD HERE"
},
tls: { rejectUnauthorized: false }
})

exports.sendConfirmationEmail = functions.https.onCall((data, context) => {

var email_adress = data.data.email;

var email = {
from: 'E-Mail Adress Goes Here',
to: email_adress,
subject: 'BlaBlaBla',
text: 'BlaBlaBla',
html: 'BlaBlaBla'
};
// Function to send e-mail to the user
transporter.sendMail(email, function(err, info) {
if (err) {
console.log(err);
return { success: false };
} else {
return { success: true }
}
});

})

现在。如果我使用 GMail 设置。一切正常。它发送电子邮件。但是,我公司有自己的 SMTP 服务器。 SMTP 适用于 Firebase 身份验证电子邮件。它正在成功发送这些电子邮件。

当我将上述配置粘贴到本地环境中时,SMTP 服务器也可以正常工作。但是,当我在 Firebase Cloud 函数中运行它时,会出现以下错误:

10:24:43.479 AM
sendConfirmationEmail
[2020-09-25 08:24:43] DEBUG [Cq6p67HnXLA] Closing connection to the server using "destroy"
10:24:43.479 AM
sendConfirmationEmail
[2020-09-25 08:24:43] ERROR Send Error: Connection timeout
10:24:44.673 AM
sendConfirmationEmail
{ Error: Connection timeout
10:24:44.673 AM
sendConfirmationEmail
at SMTPConnection._formatError (/workspace/node_modules/nodemailer/lib/smtp-connection/index.js:784:19)
10:24:44.674 AM
sendConfirmationEmail
at SMTPConnection._onError (/workspace/node_modules/nodemailer/lib/smtp-connection/index.js:770:20)
10:24:44.674 AM
sendConfirmationEmail
at Timeout._connectionTimeout.setTimeout (/workspace/node_modules/nodemailer/lib/smtp-connection/index.js:235:22)

我尝试过使用不同的 nodemailer 选项,但到目前为止还没有取得很大的成功。这也使得它在本地很难工作,但是当我部署它时却没有。

有什么想法吗?

最佳答案

我也遇到过同样的问题,我费了一番功夫,但解决方案很简单。

解决方案


不能使用在 Cloud Function 中的 端口 25 上使用出站连接。


所以我将端口更改为 465 并使用安全连接,它确实有效。

我(随机)在 Tips & Tricks 上发现了这件事。文档页面。

PS:同样的限制也适用于 Compute Engine(参见 docs)。

关于javascript - Nodemailer 自定义 SMTP 不适用于 Firebase 功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64060781/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com