Облачная функция Firestore с SendGrid - замены не показывают данные - PullRequest
1 голос
/ 20 марта 2019

С некоторой помощью я успешно создал облачную функцию, которая отправляет электронное письмо на создание следующего документа.Мое намерение состоит в том, что это электронное письмо показывает данные из документа.Мой подход состоял в том, чтобы использовать замены в шаблоне SendGrid и связывать их с данными из документа в Firestore.

Firestore хранит свои данные в / запросах, и каждый документ имеет случайно созданный идентификатор.Документ создается каждый раз при отправке формы.

На данный момент я успешно получаю электронное письмо, но без необходимых данных / замен.

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.firestoreRequest = functions.firestore.document('requests/{requestId}')
  .onCreate((snap, context) => {

    const requestId = snap.id; // get the id
    const db = admin.firestore();

    return db.collection('requests').doc(requestId)
      .get()
      .then(doc => {
        const request = doc.data();
        const msg = {
          to: 'fuhr@gmx.net',
          from: 'fuhr@gmx.net',

          templateId: 'd-3cd6b40a74f34b53d1633702107d2',
          substitutionWrappers: ['{{', '}}'],
          substitutions: {
            name: request.name,
            lastname: request.lastname,
            email: request.email,
            package: request.package,
            date: request.date,
            text: request.text
            // and other custom properties here
          }
        };

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

Шаблон SendGrid:

    <html>
    <head>
      <title>Request</title>
    </head>
    <body>
      Name: {{name}}<br>
      Family: {{lastname}}<br>
      Email: {{email}}<br>
      Package: {{package}}<br>
      Date: {{date}}<br>
      Text: {{text}}<br>
    </body>
    </html>

1 Ответ

0 голосов
/ 20 марта 2019

Я понял, что ссылаюсь на неправильный тип шаблона SendGrid.Поправьте меня, если я ошибаюсь, но SendGrid больше не поддерживает устаревший шаблон электронной почты, и это именно тот тип шаблона, на который я ссылаюсь с подстановками.

Этот параметр относится к нашим исходным шаблонам электронной почты.Теперь мы поддерживаем более полнофункциональные транзакционные шаблоны с поддержкой нескольких шаблонов, версий и т. Д.

Вместо подстановок мне пришлось использовать:

          dynamic_template_data: {
            name: request.name,
            lastname: request.lastname,
            email: request.email,
            package: request.package,
            date: request.date,
            text: request.text
            // and other custom properties here
          }
...