Облачная функция Firebase для использования sendgrid для отправки электронных писем при отправке контактной формы в firestore - PullRequest
0 голосов
/ 29 декабря 2018

Я хочу, чтобы мой сервер Firebase отправлял мне электронное письмо, когда документ создается в коллекции Firestore на основе отправки формы в моем приложении vue.

Я нашел sendgrid дляЧтобы сделать работу проще всего, пример, упомянутый на странице пакета, предполагает, что я храню ключ API в переменной среды.
Поскольку это будет выполняться из облачной функции, я использовал следующую команду firebase functions:config:set sendGrid.key="THE API GOES HERE", как упоминалосьв документации Firebase здесь

облачная функция
Я инициализировал облачные функции Firebase локально, затем я вызвал модуль администратора, чтобы я мог слушать onCreate(), когдадокумент создан в firestore, я использовал sendGrid внутри функции обратного вызова onCreate() .. Я протестировал код и проверил журналы функций в моем проекте firebase, и он успешно вызывается и завершается со статусом ok, которыйозначает, что все должно работать нормально.

вот мой index.js код в папке /functions в корне моего проекта

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

// sendGrid
const sgMail = require('@sendgrid/mail');

// the cloud function
exports.formSubmitted = functions.firestore.document('message/{messageId}').onCreate(doc => {
  // referencing the form data
  const formData = doc.data();

  // the following should be logged in the function logs in my firebase project 
  console.log(formData);

  // retrieving the environment variable 
  sgMail.setApiKey(functions.config().sendgrid.key);

  // the message to be sent
  const msg = {
    to: 'MY-EMAIL@gmail.com',
    from: formData.email,
    subject: 'new user submitted our contact form',
    text: formData.message,
    html: '<h3> test email from sendGrid </h3>'
  }

  return sgMail.send(msg);
})

результат : все работало нормально, за исключением того, что я не получил письмо.

Если требуется дополнительный код / ​​объяснение, пожалуйста,оставьте комментарий ниже.любая помощь или подсказки высоко ценится, заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...