ฉันกำลังเผชิญกับพฤติกรรมแปลก ๆ (สำหรับฉัน)
ฉันกำลังพยายามสร้างแบบฟอร์มคำติชมในแอป 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
หากใครสามารถให้ความกระจ่างได้ ฉันจะขอบคุณมาก