Хорошо, поэтому я установил Ionic webapp с контактной формой, и у меня есть форма, взаимодействующая с firebase, что означает, что вся информация моей формы хранится в базе данных в реальном времени. Теперь я настроил SendGrid согласно этому руководству:
Firestore — события, инициированные базой данных; https://fireship.io/lessons/sendgrid-transactional-email-guide/ < / а>
Однако облачные функции не запускаются при вводе новых данных. Я не получаю ошибок на консоли, а с панели инструментов sendgrid нет запросов. Насколько я понимаю, при изменении базы данных она автоматически запускает функцию, а затем 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: ‘[email protected]’, 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 прошло успешно.
Пожалуйста, приветствуется любая помощь.
редактировать //////////////////////////////////////////////// Редактировать
Вместо этого пришлось использовать Nodemailer.
Проверьте журналы изменений в функциях firebase. Вы настроили свой проект как платежный? — person Acer79 schedule 05.10.2019
В бесплатном тарифе доступны только функции, работающие с GCP. Для использования SendGrid вам необходимо получить тарифный план. — person Acer79 schedule 05.10.2019
@Mises, как сделать проект платежным? SendGrid сообщает, что это бесплатно 100 раз в день. Я что-то здесь упускаю? — person Acer79 schedule 05.10.2019
Да, ты скучаешь. Дело не в SendGrid, а в Firebase. Функции Firebase бесплатны только при работе с инструментами firebase / GCP !!! Если вы хотите работать с другими инструментами, у вас должен быть проект оплаты firebase. !!! — person Acer79 schedule 05.10.2019
Настройте план Blaze в своем проекте firebase. Вы можете пропускать 5 ГБ в месяц бесплатно, и Blaze Plan будет ограничивать вас только в том случае, если вы перейдете на какой-либо бесплатный план, поэтому создание веб-сайта по-прежнему должно быть бесплатным. — person Acer79 schedule 05.10.2019
@ Acer79 Прочтите
firebase.google.com/pricing Исходящие сети = только службы Google А SendGrid не является службой Google . — person Acer79 schedule 05.10.2019
Отвечаю на вопрос. Позвоните мне, если это так. — person Acer79 schedule 05.10.2019
Источник: