как отправить электронное письмо в функции https firebase через собственный smtp

я столкнулся с каким-то странным (для меня) поведением.
Я пытаюсь создать форму обратной связи в своем приложении firebase
Это простая форма, которая должна отправлять мне электронное письмо, когда пользователь отправляет ее.

Я создал функцию onCall в своем приложении firebase.

Когда я тестирую его локально через firebase experimental:functions:shell, он работает, и я получаю электронное письмо, но развернутое всегда терпит неудачу с:

{
code: "ECONNECTION"
command: "CONN"
errno: "ENOTFOUND"
}

тело функции:

function feedbacks(data)
{

    let email = createEmail(data);

    let transport = nodemailer.createTransport({
        host: 'smtp.yandex.ru',
        port: 465,
        secure: true,
        // tried this one, but without success too
        //tls:{ secureProtocol: "TLSv1_method" },
        auth: {
            user: 'xxxx@xxxx',
            pass: 'xxxx'
        }
    });

    return new Promise((resolve, reject) => {
        transport.sendMail(email, err => {
            if (err == null) {
                resolve(true);
            } else {
                reject(new functions.https.HttpsError('internal', 'failed', err))
            }
        });
    });

}

Похоже, что развернутая функция просто не может получить доступ к smtp-серверу из-за некоторых ограничений Firebase, о которых я не знаю.

РЕДАКТИРОВАТЬ:
я протестировал развернутую функцию с gmail smtp и моими учетными данными gmail, которые я также использую в firebase, и это работает.

В документах говорится, что я МОГУ использовать собственный smtp, хотя его порт не 25.
Если кто-то может пролить свет на это, я был бы признателен.


person taburetkin    schedule 24.12.2018    source источник
comment
На каком плане оплаты вы находитесь?   -  person Renaud Tarnec    schedule 24.12.2018
comment
@RenaudTarnec spark (это бесплатный план), значит, эти ограничения основаны на плане? :-/   -  person taburetkin    schedule 24.12.2018


Ответы (1)


Вы должны быть на тарифном плане «Пламя» или «Пламя».

На самом деле, бесплатный план «Spark» «разрешает исходящие сетевые запросы только к службам, принадлежащим Google». См. https://firebase.google.com/pricing/ (наведите указатель мыши на вопросительный знак расположен после заголовка «Облачные функции»)

Поскольку ваш SMTP-сервер не принадлежит Google, вам необходимо переключиться на план «Flame» или «Blaze».

person Renaud Tarnec    schedule 24.12.2018