Как отправить настраиваемую электронную почту с облачными функциями Firebase - PullRequest
0 голосов
/ 17 ноября 2018

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

Я следовал этому уроку: Ссылка на учебник от Дэйва Мартина

Но продолжайте получать эту ошибку:

Произошла ошибка при отправке приветственного письма: { status: 422, message: 'Указано ноль получателей', код: 300}

Вот мой код для отправки почты из облачных функций:

//Mail 
const nodemailer = require('nodemailer')
const postmarkTransport = require('nodemailer-postmark-transport')


// Google Cloud environment variable used:
// firebase functions:config:set postmark.key="API-KEY-HERE"
const postmarkKey = functions.config().postmark.key
const mailTransport = nodemailer.createTransport(postmarkTransport({
auth: {
    apiKey: postmarkKey
}
}))
exports.OnUserCreation = functions.auth.user().onCreate((user) => 
{
console.log("user created: " + user.data.uid);
console.log("user email: " + user.data.email);
sendEmail(user);
})

function sendEmail(user) 
{
// Send welcome email to new users
const mailOptions = 
{
    from: '"test" <test@test.com>',
    to: user.email,
    subject: 'Welcome!',
    html: 'hello'
}
// Process the sending of this email via nodemailer
return mailTransport.sendMail(mailOptions)
    .then(() => console.log('Welcome confirmation email sent'))
    .catch((error) => console.error('There was an error while sending the welcome email:', error))
}

Мой postmark.key уже настроен в конфигурации Firebase ... API сообщает мне, что проблема заключается в формате, который я использую для отправки информации по почте. Как я могу это исправить?

Обновление

Я также пытался изменить mailOptions, как указано ниже, и по-прежнему та же ошибка:

    const mailOptions = {
        from: 'test@test.com',
        to: user.email,
        subject: 'Welcome!',
        textBody: 'hello'
    }

1 Ответ

0 голосов
/ 17 ноября 2018

Решили перезапустить с нуля, следуя только документации по штемпелю (кстати, действительно хорошо ).

Итак, вот очень простые шаги для отправки почты с событий в облачных функциях Firebase:

1 - скачать пакеты:

Прогон: npm install postmark

2 - зарегистрируйтесь для штемпеля

Зарегистрируйтесь на PostMark - затем найдите свой ключ API.

3 - настройка конфигурации среды Firebase:

Пробег: firebase functions:config:set postmark.key="API-KEY-HERE"

4 index.js код для добавления:

//Mail 
const postmark = require('postmark')
const postmarkKey = functions.config().postmark.key;
const mailerClient = new postmark.ServerClient(postmarkKey);

exports.OnUserCreation = functions.auth.user().onCreate((user) => {
console.log("user created: " + user.data.uid);
console.log("user email: " + user.data.email);
return sendEmail(user);
})

// Send welcome email to new users
function sendEmail(user) {
const mailOptions = {
    "From": "XYZ@YOURDOMAIN.com",
    "To": user.data.email,
    "Subject": "Test",
    "TextBody": "Hello from Postmark!"
}
return mailerClient.sendEmail(mailOptions)
    .then(() => console.log('Welcome confirmation email sent'))
    .catch((error) => console.error('There was an error while sending the welcome email:', error))
}

Вот и все.

Не нужно ни загружать нодмаилер, ни использовать транспортер.

...