วิธีส่งอีเมลในฟังก์ชัน firebase https ผ่าน 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)


คุณต้องอยู่ในแผนการกำหนดราคา "Flame" หรือ "Blaze"

ตามความเป็นจริง แผน "Spark" ฟรี "อนุญาตคำขอเครือข่ายขาออก เฉพาะบริการของ Google เท่านั้น" ดู https://firebase.google.com/pricing/ (เลื่อนเมาส์ไปที่เครื่องหมายคำถาม ตั้งอยู่หลังชื่อ "ฟังก์ชั่นคลาวด์")

เนื่องจากเซิร์ฟเวอร์ SMTP ของคุณไม่ใช่บริการของ Google คุณจึงต้องเปลี่ยนไปใช้แผน "Flame" หรือ "Blaze"

person Renaud Tarnec    schedule 24.12.2018