Транснациональная электронная почта с SendGrid и Firebase Нет ошибок, но нет электронных писем (Использовано NodeMailer в качестве ответа) - PullRequest
1 голос
/ 04 октября 2019

хорошо, поэтому я настроил Ionic webapp с формой контакта, и у меня есть форма, взаимодействующая с firebase, означающая, что вся информация о моей форме хранится в базе данных в реальном времени. Теперь я настроил SendGrid в соответствии с этим руководством:

Firestore - Database Triggered Events;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: 'Your_email@gmail.com',
        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);

});

Развертываниефункции были успешно запущены.

Пожалуйста, оцените любую помощь.

edit ////////////////////////////////////////////////// edit

Закончено использование Nodemailer.

Ответы [ 2 ]

3 голосов
/ 05 октября 2019

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

2 голосов
/ 09 октября 2019

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

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

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

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

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

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

здесь также есть официальные документы от нодмейлера;

https://nodemailer.com/about/

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

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