Javascript 带有SendGrid和Firebase的跨国电子邮件没有错误,但没有电子邮件(使用NodeEmailer作为答案)
好的,我设置了一个带有联系人表单的Ionic webapp,我的表单与firebase交互,这意味着我所有的表单信息都存储在实时数据库中。现在,我已经根据本教程设置了SendGrid: Firestore-数据库触发事件; 但是,在输入新数据时,不会触发云功能。我在控制台上没有收到任何错误,sendgrid dashboard没有任何请求。我的理解是,当数据库发生变化时,它将自动触发该功能,然后sendgrid将发送包含相关数据的电子邮件 这是我的密码Javascript 带有SendGrid和Firebase的跨国电子邮件没有错误,但没有电子邮件(使用NodeEmailer作为答案),javascript,firebase,firebase-realtime-database,google-cloud-functions,sendgrid,Javascript,Firebase,Firebase Realtime Database,Google Cloud Functions,Sendgrid,好的,我设置了一个带有联系人表单的Ionic webapp,我的表单与firebase交互,这意味着我所有的表单信息都存储在实时数据库中。现在,我已经根据本教程设置了SendGrid: Firestore-数据库触发事件; 但是,在输入新数据时,不会触发云功能。我在控制台上没有收到任何错误,sendgrid dashboard没有任何请求。我的理解是,当数据库发生变化时,它将自动触发该功能,然后sendgrid将发送包含相关数据的电子邮件 这是我的密码 // Firebase Config i
// Firebase Config
import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';
admin.initializeApp();
// Sendgrid Config
import * as sgMail from '@sendgrid/mail';
const API_KEY = functions.config().sendgrid.key;
const TEMPLATE_ID = functions.config().sendgrid.template;
sgMail.setApiKey(API_KEY);
// Emails the author when a new messages is added
export const newMessage = functions.firestore.document('messages/{messageId}').onCreate( async (change, context) => {
// Raw Data
// const post = postSnap.data();
const msgData = change.data();
// Email
const msg = {
to: msgData.email,
from: 'Your_email@gmail.com',
templateId: TEMPLATE_ID,
dynamic_template_data: {
subject: 'New Message',
name: msgData.name,
text: `Here is the message: ${msgData.message}`,
phone: msgData.phone
},
};
// Send it
return sgMail.send(msg);
});
功能已成功部署到firebase
请帮忙,谢谢
编辑//////////////////////////////////////////////edit
结果改用了NodeEmailer。这很可能是免费的Firebase Spark计划。云功能:出站网络=仅限谷歌服务。如果你改为Blaze计划,如果你不使用太多的出站网络,你仍然不会支付任何费用。我有两个3个月的Blaze计划,而且不付任何费用。这可能是免费的Firebase Spark计划。云功能:出站网络=仅限谷歌服务。如果你改为Blaze计划,如果你不使用太多的出站网络,你仍然不会支付任何费用。3个月内,我有2个Blaze计划,不付任何费用。好的,这就是我在搜索和搜索之后的工作。感谢@Mises为我指明了方向。对于其他尝试使用NoEmailer通过firebase发送事务性电子邮件的人,我就是这样做的 我遵循@Mises提供给我的上述链接; 我能够将函数上传到firebase,但firebase函数日志中仍然出现错误 -发送电子邮件时出错:{错误:丢失 普通证书 因此,我从那里开始关注这个链接; 不幸的是,在谷歌上激活不太安全的应用程序对我来说不起作用 还有来自NodeEmailer的官方文件
希望这对其他人有所帮助。好的,这就是我在搜索和搜索后所做的工作。感谢@Mises为我指明了方向。对于尝试使用NodeEmailer与firebase发送事务性电子邮件的其他人,我就是这样做的 我遵循@Mises提供给我的上述链接; 我能够将函数上传到firebase,但firebase函数日志中仍然出现错误 -发送电子邮件时出错:{错误:丢失 普通证书 因此,我从那里开始关注这个链接; 不幸的是,在谷歌上激活不太安全的应用程序对我来说不起作用 还有来自NodeEmailer的官方文件
希望这对其他人有所帮助。检查firebase函数中的更改日志。您是否将项目设置为付款项目?只有使用GCP的函数才是免费计划。要使用SendGrid,您需要获得付款计划。@Mises您如何将项目设置为付款项目?SendGrid说它是100/天的免费项目。我在这里遗漏了什么?是的,你错过了。这不是关于SendGrid,而是关于Firebase。Firebase功能只有在你使用Firebase/GCP工具时才是免费的!!!如果你想使用其他工具,你需要支付Firebase项目的费用。!!!在你的Firebase项目中设置Blaze计划。你可以每月免费获得5gb的带宽,Blaze计划将仅在你成功的情况下向你收费oss任何用于构建网站的免费计划都应该是免费的。检查firebase函数中的更改日志。您是否将项目设置为付款项目?只有使用GCP的函数才是免费计划。要使用SendGrid,您需要获得付款计划。@Mises您如何将项目设置为付款项目?SendGrid说它是100/天的免费项目。我在这里遗漏了什么?是的,你遗漏了。这不是关于SendGrid,而是关于Firebase。Firebase功能只有在使用Firebase/GCP工具时才是免费的!!!如果你想使用其他工具,你需要支付Firebase项目的费用。!!!在你的Firebase项目中设置Blaze计划。你可以每月免费使用5gb的带宽和Blaze计划只有当你通过任何免费计划时才会向你收费,所以构建网站仍然应该是免费的。我注册了Blaze计划,但仍然无法使我的功能正常工作。我仍然没有从Firebase、SendGrid或控制台收到任何错误。数据仍然记录在实时数据库中,但仍然没有来自SendGrid的电子邮件。我搞不清楚。是吗u检查函数日志中是否有错误?console.log从sgMail.sendmsg响应并签入日志。很抱歉,我还是firebase的新手,但我仍然没有显示任何错误。这是我的日志的图像。感谢您的帮助!尝试更改您gmail.com地址中的身份验证策略。默认情况下,身份验证受到限制,并且你不能通过第三方应用程序登录。我注册了
Blaze计划,但仍然无法使我的功能正常工作。我仍然没有从Firebase、SendGrid或控制台收到任何错误。数据仍记录在实时数据库中,但仍然没有来自SendGrid的电子邮件。我搞不懂。你检查过函数日志中是否有错误吗?console.log从sgMail.sendmsg响应并签入日志。很抱歉,我还是firebase的新手,但我仍然没有显示任何错误。这是我日志中的一个图像。谢谢你的帮助!尝试更改gmail.com地址中的身份验证策略。默认情况下,身份验证受到限制,您无法通过第三方应用程序登录。