Node.js plesk - отправка писем с помощью nodemailer не работает

Я использую node.js с nodemailer на новом корневом сервере ubuntu plesk.

При попытке отправить такое электронное письмо:

module.exports = {
    SMTP_HOST: 'host',
    SMTP_USER: 'username',
    SMTP_PASS: 'password',
};

let transporter = nodemailer.createTransport({
  host: SMTP_HOST,
  //port: 465,
  port: 587,
  secure: true,
  auth: {
      user: SMTP_USER,
      pass: SMTP_PASS
  },
  tls:{
    rejectUnauthorized:false  // if on local
  }
});

... Я получаю это сообщение об ошибке:

{ Error: connect ECONNREFUSED ip-adress:587
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1106:14)
errno: 'ECONNREFUSED',
code: 'ECONNECTION',
syscall: 'connect',
address: 'ip-adress',
port: 587,
command: 'CONN' }

Как я могу отправлять электронные письма через корневой сервер plesk?

... если я использую порт 465, я получаю эту ошибку:

{ Error: Data command failed: 550 5.7.1 Command rejected
at SMTPConnection._formatError (/home/project/node_modules/nodemailer/lib/smtp-connection/index.js:605:19)
at SMTPConnection._actionDATA (/home/project/node_modules/nodemailer/lib/smtp-connection/index.js:1454:34)
at SMTPConnection._responseActions.push.str (/home/project/node_modules/nodemailer/lib/smtp-connection/index.js:1426:26)
at SMTPConnection._processResponse (/home/project/node_modules/nodemailer/lib/smtp-connection/index.js:764:20)
at SMTPConnection._onData (/home/project/node_modules/nodemailer/lib/smtp-connection/index.js:570:14)
at TLSSocket._socket.on.chunk (/home/project/node_modules/nodemailer/lib/smtp-connection/index.js:522:47)
at TLSSocket.emit (events.js:198:13)
at addChunk (_stream_readable.js:288:12)
at readableAddChunk (_stream_readable.js:269:11)
at TLSSocket.Readable.push (_stream_readable.js:224:10)
at TLSWrap.onStreamRead [as onread] (internal/stream_base_commons.js:94:17)
code: 'EENVELOPE',
response: '550 5.7.1 Command rejected',
responseCode: 550,
command: 'DATA' }  

person Philipp M    schedule 16.10.2019    source источник
comment
Что-то не так с вашими вариантами подключения. В вашей ошибке упоминается порт 587, но в ваших параметрах указан порт 465.   -  person ahwayakchih    schedule 16.10.2019
comment
Кроме того, пробовали ли вы sendmail транспорт для Nodemailer? nodemailer.com/transports/sendmail   -  person ahwayakchih    schedule 16.10.2019
comment
это должен был быть порт 587 ... Раньше я пробовал 465, но это тоже не сработало. Plesk рекомендует использовать 587 docs.plesk.com/en-US/ obsidian / administrator-guide / 59430 ... но мой хостер говорит (в общем) использовать 465 для исходящей почты ...   -  person Philipp M    schedule 16.10.2019
comment
... нет, я не использовал sendmail ... попробую   -  person Philipp M    schedule 16.10.2019
comment
Обновленная ошибка для порта 465 больше похожа на ошибку данных, а не на ошибку подключения. Так что, может быть, попытаться сохранить порт 465, но вместо этого изменить различные параметры nodemailer, касающиеся данных? Проверьте эту сообщенную проблему: github.com/nodemailer/nodemailer/issues/145   -  person ahwayakchih    schedule 16.10.2019
comment
Это действительно была недостающая часть sendmail: true. С радостью приму ваш ответ, если вы его опубликуете :-)   -  person Philipp M    schedule 16.10.2019
comment
Я рад, что это помогло, я просто догадывался, так что на самом деле это не было ответом с моей стороны :).   -  person ahwayakchih    schedule 16.10.2019


Ответы (1)


Добавление sendmail: true (https://nodemailer.com/transports/sendmail/) решило проблему :

let transporter = nodemailer.createTransport({
  sendmail: true,
  newline: 'unix',
  path: '/usr/sbin/sendmail',
  host: SMTP_HOST,
  //port: 465,
  port: 587,
  secure: true,
  auth: {
      user: SMTP_USER,
      pass: SMTP_PASS
  },
  tls:{
    rejectUnauthorized:false  // if on local
  }
});
person Philipp M    schedule 16.10.2019