Транснациональная электронная почта с SendGrid и Firebase Без ошибок, но без электронных писем (в качестве ответа использовался NodeMailer)

Хорошо, поэтому я установил 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

См. также:  Как запустить приложение Angular в качестве контейнера на виртуальной машине Azure

Да, ты скучаешь. Дело не в 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

Понравилась статья? Поделиться с друзьями:
IT Шеф
Комментарии: 2
  1. Acer79

    Это Probobly Free Firebase Spark Plan https://firebase.google.com/pricing. Облачные функции: исходящая сеть = только сервисы Google. Если вы перейдете на тарифный план Blaze, вы по-прежнему не будете ничего платить, если не будете использовать много исходящих сетевых подключений. У меня есть 2 плана Blaze на 3 месяца, и я ничего не плачу.

    Я подписался на план Blaze, но все еще не могу заставить работать свою функцию. Я по-прежнему не получаю ошибок от Firebase, SendGrid или консоли. Данные все еще записываются в базу данных в реальном времени, но от SendGrid по-прежнему нет электронной почты. Я не могу этого понять. person Acer79; 06.10.2019

    Вы проверяли, есть ли ошибки в журналах функций? person Acer79; 06.10.2019

    console.log ответ от sgMail.send (msg) И проверьте журналы. person Acer79; 06.10.2019

    Извините, я все еще новичок в firebase, но я все еще не показываю мне никаких ошибок. Вот изображение в моем журнале. imgur.com/a/8pvDpdS Спасибо за вашу помощь! person Acer79; 07.10.2019

    Попробуйте изменить политику аутентификации в своем адресе gmail.com. По умолчанию аутентификация ограничена, и вы не можете войти в систему через сторонние приложения. person Acer79; 07.10.2019

    myaccount.google.com/lesssecureapps здесь. Вы сделаете менее безопасным Gmail, чтобы стороннее приложение могло входить в вашу электронную почту . person Acer79; 07.10.2019

    здесь У вас есть пример, как настроить отправку электронной почты с помощью gmail.com. Я не знаю точно, как работает SendGrid. Я обычно использую gmail. Если SendGrid необходимо войти в Вашу учетную запись Gmail, Вам необходимо будет разрешить ему войти, настроив Gmail. Ссылка: github.com/firebase/functions-samples/tree/ Узел 8 / person Acer79; 07.10.2019

    Спасибо, @Mises, я смог начать работу, перейдя по вашей ссылке на nodemailer, я перестал использовать SendGrid, так как не смог выяснить, в чем была ошибка. person Acer79; 09.10.2019

    Убедитесь, что это может быть просто SendGrid не может войти на ваш адрес электронной почты. XD person Acer79; 09.10.2019

    Используя nodemailer и gmail. Вы не сможете отправлять массовые электронные письма. person Acer79; 09.10.2019

    да я это понимаю. Google ограничивает 500 получателей в день, но я не думаю, что для того, для чего я его использую, буду отправлять столько писем. Еще раз спасибо за вашу помощь, мне потребовалось 4 дня, чтобы разобраться в этом, и вы были БОЛЬШОЙ помощью! person Acer79; 09.10.2019

    Не волнуйтесь, я боролся с этим несколько месяцев назад. XD person Acer79; 09.10.2019

  2. Acer79

    хорошо, это то, что у меня сработало после поиска и поиска. Спасибо @Mises за то, что дал мне направление, которому нужно следовать. Для других, которые пытаются отправлять транзакционные электронные письма с помощью firebase с помощью nodemailer, вот как я это сделал.

    1. Я перешел по ссылке выше, предоставленной мне @Mises; https://github.com/firebase/functions-samples/tree/Node-8/email-confirmation

    Мне удалось загрузить функцию в firebase, но я все еще получал ошибку в журналах функций firebase;

    -При отправке электронного письма произошла ошибка: {Ошибка: отсутствуют учетные данные для «PLAIN»

    Итак, оттуда я перешел по этой ссылке; Отсутствуют учетные данные для PLAIN nodemailer

    к сожалению, активация менее безопасных приложений в Google у меня не сработала.

    здесь также официальная документация от nodemailer;

    https://nodemailer.com/about/

    Надеюсь, это поможет кому-то другому.

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: