【问题标题】:SendGrid template transactional v3 functions FirebaseSendGrid 模板事务性 v3 函数 Firebase
【发布时间】:2018-09-25 14:44:57
【问题描述】:

每当 Firestore 中有新记录时,我都会使用 Firebase 中的一个函数发送一封电子邮件,这工作正常,但似乎 SendGrid 已更新为新版本的事务模板。

我之前在我的 SendGrid 事务模板正文中的内容是:

nombre: {{nombre}}
email: {{email}}
celular: {{celular}}
valorPropiedad: {{valorPropiedad}}

这工作正常,即它发送带有新记录数据的邮件(每次在 Firestore 中有新记录),但现在它只发送邮件但没有任何数据到达。我认为 SendGrid 发生了一些变化?还是我的功能的主题?

在我使用 Angular 5 之前,我现在使用的是版本 6。

这里是我的函数index.js的代码:

const functions = require('firebase-functions');

const admin = require('firebase-admin');
admin.initializeApp();

const SENDGRID_API_KEY = functions.config().sendgrid.key

const sgMail = require('@sendgrid/mail');
sgMail.setApiKey(SENDGRID_API_KEY);

exports.firestoreEmail2 = functions.firestore
    .document('domiciliarios/{domiciliarioId}')
    .onCreate((snap, context) => {

        const domiciliarioId = context.params.domiciliarioId;
        const db = admin.firestore()
        return db.collection('domiciliarios').doc(domiciliarioId)
            .get()
            .then(doc => {

                const domiciliario = doc.data();

                const msg = {
                    from: 'mail1@mail.com',
                    to: 'mail2@mail.com',
                    subject: 'mySubject',
                    templateId: 'myTemplateId',
                    substitutionWrappers: ['{{', '}}'],
                    substitutions: {
                        nombre: domiciliario.nombre,
                        email: domiciliario.email,
                        celular: domiciliario.celular,
                        valorPropiedad: `US$ ${domiciliario.valorPropiedad}`,
                    }
                };

                return sgMail.send(msg)
            })
            .then(() => console.log('email sent!'))
            .catch(err => console.log(err))

});

【问题讨论】:

    标签: firebase google-cloud-firestore sendgrid-api-v3


    【解决方案1】:

    经过一些蛮力测试后,这种组合奏效了。

    exports.firestoreEmail = functions.firestore
        .document( 'members/{memberId}' )
        .onCreate( ( snap, context ) => {
    
            const member = snap.data();
            mail.setApiKey( SENDGRID_API_KEY );
            const msg = {
                to: member.email,
                from: "hello@angularfirebase.com",
                subject: "Welcome",
                templateId: "xxx",
                substitutions: {
                    name: member.name,
                    email: member.email,
                    membershipId: member.memberId
                },
                dynamic_template_data:
                {
                    name: member.name,
                    email: member.email,
                    membershipId: member.memberId
                }
            };
    
            return mail.send( msg ).then( () => console.log( 'email sent to receiver2!' ) )
                .catch( err => console.log( err ) );
        } );

    【讨论】:

      猜你喜欢
      • 2019-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多