Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带有SendGrid和Firebase的跨国电子邮件没有错误,但没有电子邮件(使用NodeEmailer作为答案)_Javascript_Firebase_Firebase Realtime Database_Google Cloud Functions_Sendgrid - Fatal编程技术网

Javascript 带有SendGrid和Firebase的跨国电子邮件没有错误,但没有电子邮件(使用NodeEmailer作为答案)

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

好的,我设置了一个带有联系人表单的Ionic webapp,我的表单与firebase交互,这意味着我所有的表单信息都存储在实时数据库中。现在,我已经根据本教程设置了SendGrid:

Firestore-数据库触发事件;

但是,在输入新数据时,不会触发云功能。我在控制台上没有收到任何错误,sendgrid dashboard没有任何请求。我的理解是,当数据库发生变化时,它将自动触发该功能,然后sendgrid将发送包含相关数据的电子邮件

这是我的密码

// 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地址中的身份验证策略。默认情况下,身份验证受到限制,您无法通过第三方应用程序登录。