node.js - Node.js plesk - 使用 nodemailer 发送电子邮件不起作用
问题描述
我在新的 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' }
解决方案
添加 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
}
});
推荐阅读
- jquery - Select2 字段宽度难以调整大小
- ubuntu - 如何读取 AWS ec2 实例日志中的 auth.logs?
- wordpress - WordPress 市场是否允许使用完整的 Angular 主题?
- python - 显示分水岭算法的分割
- java - 如何在 javafx 的运行时创建一个新的组合框?
- python - 无法访问用 json.dumps(json.loads(input)) 加载的 JSON
- php - 是否可以通过 wordpress 中的标签获取类别的子类别?
- c++ - 如何组织包含模板和朋友混合的类?
- prometheus - 如何将整个 JSON 对象(详细数据)存储到 Prometheus Timeseries 数据库中
- c++ - C++ openssl - 生成 RSA 密钥对并读取