如何通过自己的smtp在firebase https功能中发送电子邮件
how to send a email in firebase https function through own smtp
我正面临一些奇怪的(对我来说)行为。
我正在尝试在我的 firebase 应用程序中创建反馈表
它是一个简单的表格,当用户提交时应该给我发一封电子邮件。
我在我的 firebase 应用中创建了 onCall
函数。
当我通过 firebase experimental:functions:shell
在本地测试它的工作时,我收到一封电子邮件,但部署的电子邮件总是失败:
{
code: "ECONNECTION"
command: "CONN"
errno: "ENOTFOUND"
}
函数体:
function feedbacks(data)
{
let email = createEmail(data);
let transport = nodemailer.createTransport({
host: 'smtp.yandex.ru',
port: 465,
secure: true,
// tried this one, but without success too
//tls:{ secureProtocol: "TLSv1_method" },
auth: {
user: 'xxxx@xxxx',
pass: 'xxxx'
}
});
return new Promise((resolve, reject) => {
transport.sendMail(email, err => {
if (err == null) {
resolve(true);
} else {
reject(new functions.https.HttpsError('internal', 'failed', err))
}
});
});
}
由于我不知道的一些 firebase 限制,部署的功能似乎无法访问 smtp 服务器。
编辑:
我使用 gmail smtp 和我在 firebase 中使用的 gmail 凭据测试了已部署的功能,并且可以正常工作。
文档说,我可以使用自定义 smtp,而它的端口不是 25。
如果有人能阐明这一点,我将不胜感激。
您需要加入 "Flame" 或 "Blaze" 定价计划。
事实上,免费 "Spark" 计划 "allows outbound network requests only to Google-owned services"。请参阅 https://firebase.google.com/pricing/(将鼠标悬停在 "Cloud Functions" 标题后面的问号上)
由于您的 SMTP 服务器不是 Google-owned 服务,您需要切换到 "Flame" 或 "Blaze" 计划。
我正面临一些奇怪的(对我来说)行为。
我正在尝试在我的 firebase 应用程序中创建反馈表
它是一个简单的表格,当用户提交时应该给我发一封电子邮件。
我在我的 firebase 应用中创建了 onCall
函数。
当我通过 firebase experimental:functions:shell
在本地测试它的工作时,我收到一封电子邮件,但部署的电子邮件总是失败:
{
code: "ECONNECTION"
command: "CONN"
errno: "ENOTFOUND"
}
函数体:
function feedbacks(data)
{
let email = createEmail(data);
let transport = nodemailer.createTransport({
host: 'smtp.yandex.ru',
port: 465,
secure: true,
// tried this one, but without success too
//tls:{ secureProtocol: "TLSv1_method" },
auth: {
user: 'xxxx@xxxx',
pass: 'xxxx'
}
});
return new Promise((resolve, reject) => {
transport.sendMail(email, err => {
if (err == null) {
resolve(true);
} else {
reject(new functions.https.HttpsError('internal', 'failed', err))
}
});
});
}
由于我不知道的一些 firebase 限制,部署的功能似乎无法访问 smtp 服务器。
编辑:
我使用 gmail smtp 和我在 firebase 中使用的 gmail 凭据测试了已部署的功能,并且可以正常工作。
文档说,我可以使用自定义 smtp,而它的端口不是 25。
如果有人能阐明这一点,我将不胜感激。
您需要加入 "Flame" 或 "Blaze" 定价计划。
事实上,免费 "Spark" 计划 "allows outbound network requests only to Google-owned services"。请参阅 https://firebase.google.com/pricing/(将鼠标悬停在 "Cloud Functions" 标题后面的问号上)
由于您的 SMTP 服务器不是 Google-owned 服务,您需要切换到 "Flame" 或 "Blaze" 计划。