【问题标题】:Node.js plesk - Sending emails with nodemailer not workingNode.js plesk - 使用 nodemailer 发送电子邮件不起作用
【发布时间】:2019-10-16 14:43:07
【问题描述】:

我在新的 ubuntu plesk 根服务器上使用 node.js 和 nodemailer。

尝试发送这样的电子邮件时:

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' }  

【问题讨论】:

  • 您的连接选项有问题。您的错误提及端口587,但您的选项指定端口465
  • 另外,您是否尝试过 Nodemailer 的 sendmail 传输? nodemailer.com/transports/sendmail
  • 它应该是端口:587 ...我之前尝试过 465,但也没有用。 Plesk 说要使用 587 docs.plesk.com/en-US/obsidian/administrator-guide/59430 ...但我的托管人说(通常)使用 465 发送邮件 ...
  • ...不,我没有使用 sendmail ...我会尝试一下
  • 您更新后的 465 端口错误看起来更像是数据错误,而不是连接错误。因此,也许尝试保留端口 465,但更改各种 nodemailer 的有关数据的选项?检查此报告的问题:github.com/nodemailer/nodemailer/issues/145

标签: node.js plesk nodemailer plesk-onyx


【解决方案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
  }
});

【讨论】:

    猜你喜欢
    • 2017-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-23
    • 2013-08-13
    • 2015-05-19
    相关资源
    最近更新 更多