Nodemailer работает на Localhost, а не на живом сайте Netlify - PullRequest
0 голосов
/ 07 марта 2020

Я использовал nodemailer / ax ios для получения информации из формы для отправки на адрес электронной почты.

Когда сайт запускается с localhost: 3000, почта отправляется без проблем, хотя вживую он не проходит.

Я предполагаю, что это как-то связано с прокси?

Вот как выглядит мой код, который работает:

const proxy = require('http-proxy-middleware')

module.exports = function(app) {

    app.user(proxy("/api", { target: "http://localhost:3000"}))
}

Живой сайт находится по адресу: https://deathless-studio.netlify.com/# /

Я пытался изменить цель на это, а также: https://deathless-studio.netlify.com/, а также http://deathless-studio.netlify.com/# / , хотя почта не отправляется.

Я всегда получаю следующие ошибки:

https://deathless-studio.netlify.com/api/v1/sendMail 404

POST https://deathless-studio.netlify.com/api/v1/sendMail 404

моя функция отправки почты выглядит следующим образом:

const sendEmail = (name, email, message, newsletter) => {

    const smtpTransport = mailer.createTransport({
        service: "Gmail",
        auth: {
            user: "(correct email)",
            pass: "(correct password)"
        }
    })


    const mail = getEmailData(name, email, message, newsletter)

    smtpTransport.sendMail(mail, function(error, response) {
        if(error) {
            console.log(error)
        } else {
            alert( "Thank you! We will be in touch shortly!")
        }
        smtpTransport.close();
    })

функция handleSubmit в моем компоненте формы также выглядит следующим образом:

   handleSubmit(event) {
    event.preventDefault();
    const data = {
      name: this.state.name,
      email: this.state.email,
      message: this.state.message,
      newsletter: this.state.newsletter
    };

    Axios.post("api/v1/sendMail", data)

    alert( "Thank you! We will be in touch shortly!")
   }

и мой индекс. js выглядит следующим образом:

const server = require("./server");


const bodyParser = require("body-parser");
const cookieParser = require("cookie-parser");

server.use(bodyParser.urlencoded({ extended: true }));
server.use(bodyParser.json());
server.use(cookieParser());

const { sendEmail } = require("../server/routes/mail");

server.post("/api/v1/sendMail", (req, res) => {
  sendEmail(req.body.name, req.body.email, req.body.message, req.body.newsletter);
});

const port = process.env.PORT || 3000;

server.listen(port, () => {
  // eslint-disable-next-line no-console
  console.log("Server listening on port", port);
});

Любые идеи о том, как исправить это?

С благодарностью.

1 Ответ

0 голосов
/ 09 марта 2020

Получается, что Netlify не использует Node.js сервер, и вы можете использовать вместо них их плагины.

В этой статье это объясняется: https://community.netlify.com/t/node-js-wont-start-trying-to-run-a-server-on-netlify/3454/2?fbclid=IwAR0wc4iLhFdS-_dZF4TGPyzONmfHQxwfEztNFO2oTTlonrsBwCF73Xf7QNY

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...