我有通过smtp服务器远程发送的问题 使用nodejs模块nodemailer
host: 'mail.5cpa.ru'
port: 587
secure: false (true tried also)
smtp服务器是我的,我可以通过thenderbird发送邮件,使用相同的设置
日志
server 220 5cpa.ru ESMTP Postfix (Ubuntu)
client EHLO vonica
server 250-5cpa.ru
250-PIPELINING
250-SIZE 15728640
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
client STARTTLS
server 220 2.0.0 Ready to start TLS
socket Closing connection to the server
谢谢!
答案 0 :(得分:7)
我有类似的问题(也许是相同的),我发现当我使用自签名SSL证书时会发生这种情况。 我通过添加" rejectUnauthorized"来解决这个问题。 tls的选项:
var transporter = nodemailer.createTransport(smtpTransport({
host: host,
port: 25,
auth: {
user: user,
pass: pass
},
tls:{
rejectUnauthorized: false
}
}));
该错误适用于" sendMail"的回调。功能,不会发出错误'。
答案 1 :(得分:3)
我没有足够的声誉回复上述内容,但您也可以查看Nodemailer的最新语法,即:
const smtpConfig = {
host: 'smtp.gmail.com',
port: 465,
secure: true, // use SSL
auth: {
user: 'user@gmail.com',
pass: 'pass'
}
}
请注意:
secure: true // use SSL
如果您告诉它使用SSL,您可能不需要TLS解决方法。
参考:https://nodemailer.com/2-0-0-beta/setup-smtp/
我目前正在运行postfix和mailx,我只需要输入主机名:
const transporter = nodemailer.createTransport({
name: 'localhost'
})
只要您可以执行此测试(在shell中输入),这应该有效:
echo "Email Body Test" | mail -s "Email Subject Test" you@yourdomain.com
如果它不起作用,请调查防火墙,端口25(在这种情况下可能不是问题,但在其他类似情况下)。
同时确认用户正在运行的节点有权使用该邮件程序。