Я создал внутренний сервер, используя express, и развернул его в firebase. что позволяет мне получать электронные письма со своей страницы контактов в моем портфолио.
Я могу получать электронные письма, когда я запускаю клиентский и внутренний сервер локально. Но когда я выполняю развертывание в firebase и пытаюсь использовать URL-адрес приложения firebase, это не работает. Затем я попытался разместить свое приложение в Github и попробовал страницу контактов, чтобы запрос был со страницы SSL (https). Но все равно я получаю ошибку 500. Я попробовал упомянутое решение и не работал send-email-via- node-js -using-nodemailer-is-not-working
My express js коды
индекс. js
const express = require("express");
const functions = require("firebase-functions");
const path = require("path");
const sendMail = require("./mail");
const log = console.log;
var cors = require("cors");
const app = express();
app.use(cors({ origin: true }));
// data parsing
app.use(express.urlencoded({ extended: false }));
app.use(express.json());
app.post("/email", (req, res) => {
// expect to receive some data from client
const { name, email, message } = req.body;
log("Data", req.body);
sendMail(email, name, message, function(err, data) {
if (err) {
res.status(500).json({ message: "Internal Error" });
} else {
res.json({ message: "success", data });
}
});
//email, name, text
});
app.get("/", (req, res) => {
res.sendFile(path.join(__dirname, "../views", "index.html"));
});
exports.app = functions.https.onRequest(app);
почта. js
const mailGun = require("nodemailer-mailgun-transport");
const auth = {
auth: {
api_key: "xxxxxxxxx",
domain: "xxxxxxxxx"
}
};
const transporter = nodemailer.createTransport(mailGun(auth));
const sendMail = (email, name, message, callBack) => {
const mailOptions = {
from: email,
to: "faizhameedv@gmail.com",
subject: `your website mail from ${name}`,
text: message
};
transporter.sendMail(mailOptions, function(err, data) {
if (err) {
console.log("err", err);
callBack(err, null);
} else {
callBack(null, data);
console.log("Message Sent!!");
}
});
};
module.exports = sendMail;
Это работает, когда я запускаю локально, используя firebase serve --only functions,hosting
, а затем, когда я развертываю его в firebase, что успешно. Но я не могу запросить новый URL, заданный firebase с /email