Nodemailer работает на местном, но не на производстве - PullRequest
0 голосов
/ 27 февраля 2020

Я разместил свое приложение в сети и попробовал свою контактную форму, но нодмалер не работает из-за тайм-аута соединения SMTP.

Вот мой транспорт

let transporter = nodemailer.createTransport({
  host: 'smtp.gmail.com',
  port: 465,
  secure: true,
  auth: {
    user: process.env.MAIL_USERNAME, //
    pass: process.env.MAIL_PASSWORD // Google app password
  },
  tls: {
      rejectUnauthorized: process.env.APP_ENV == 'local' ? false : true // which is true but also tried false
  }
});

и моя функция sendmail

let info = await transporter.sendMail({
  from: `"${data.firstname} ${data.lastname}" <${data.email}>`,
  to: process.env.MAIL_TO_DESTINATION, // list of receivers
  subject: data.subject,
  html: `<p><strong>Fullname:</strong> ${data.firstname} ${data.lastname}</p>
         <p><strong>Email:</strong> ${data.email}</p>
         <p><strong>Subject:</strong> ${data.subject}</p>
         <p><strong>Message:</strong> ${data.message}</p>`
});

Ошибка

(node:3743) UnhandledPromiseRejectionWarning: Error: Connection timeout
    at SMTPConnection._formatError (/home/clients/974a427295deac388e59a945b2c70917/portfolio-mytdragon/node_modules/nodemailer/lib/smtp-connection/index.js:784:19)
    at SMTPConnection._onError (/home/clients/974a427295deac388e59a945b2c70917/portfolio-mytdragon/node_modules/nodemailer/lib/smtp-connection/index.js:770:20)
    at Timeout._connectionTimeout.setTimeout (/home/clients/974a427295deac388e59a945b2c70917/portfolio-mytdragon/node_modules/nodemailer/lib/smtp-connection/index.js:235:22)
    at ontimeout (timers.js:436:11)
    at tryOnTimeout (timers.js:300:5)
    at listOnTimeout (timers.js:263:5)
    at Timer.processTimers (timers.js:223:10)

Я не знаю, что не так так как это работает локально. Кто-нибудь знает почему?

Спасибо.

1 Ответ

0 голосов
/ 28 февраля 2020

Я узнал, как это решить. Проблема была не в моем сценарии, а в хозяине. Мне пришлось вручную открыть выходной порт 465 TCP.

...