Почта отправляется с локального хоста, но не с живого сайта в цифровом океане - PullRequest
0 голосов
/ 07 февраля 2019

Я использую Sendgrid API для отправки электронных писем из моего проекта Node.js.При работе на моей локальной машине это работает просто отлично, но теперь я развернул в Digital Ocean (Ubuntu) почту не отправлял.Я читал, что Digital Ocean по умолчанию блокирует порты smtp, и вы, очевидно, можете открыть их через командную строку, но я не могу найти простое объяснение того, как это сделать.

const nodemailer = require("nodemailer");
const sendgridTransport = require('nodemailer-sendgrid-transport');

    const transporter = nodemailer.createTransport(sendgridTransport({
      auth: {
          api_key: process.env.SENDGRID_API
      }
    }));

    return transporter.sendMail({
      to: 'info@example.com',
      from: email,
      subject: subject,
      html: `<h1>Contact Form</h1>
            <p>Name: ${name}</p>
            <p>Email: ${email}</p>
            <p>${comments}</p>
    `
    });

ОБНОВЛЕНИЕ

Если я удаляю .env для ключа API и на самом деле жестко его кодирую, например:

const transporter = nodemailer.createTransport(sendgridTransport({
  auth: {
      api_key: '12345677788999'
  }
}));

, тогда мои электронные письма отправляются.Это мой файл .env (я использую dotenv)

DB_USER=username
DB_PASSWORD=password
DB_NAME=mydbname
SENDGRID_API=12345677788999

Итак, не уверен, почему это будет?

1 Ответ

0 голосов
/ 07 февраля 2019

Вы экспортировали этот "SENDGRID_API" в среду.Только тогда вы можете использовать process.env.SomeEnvironmentVar.

Если вы используете PM2.Вам нужно будет добавить его в файл экосистемы.Затем он использует этот конфиг и загружает ваше приложение.Предоставление всех доступных вариантов.

...