smtp通过postfix和nodejs nodemailer连接关闭发送邮件

smtp send mail via postfix and nodejs nodemailer connection closed

我有通过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

谢谢!

我有类似的问题(可能是相同的),我发现当我使用自签名 SSL 证书时会发生这种情况。 我通过向 tls:

添加 "rejectUnauthorized" 选项来解决这个问题
var transporter = nodemailer.createTransport(smtpTransport({
    host: host,
    port: 25,
    auth: {
        user: user,
        pass: pass
    },
    tls:{
        rejectUnauthorized: false
    }
}));

错误应用于 "sendMail" 函数的回调,而不是作为 'error'.

发出

我没有足够的信誉回复上面,但你也可以从 Nodemailer 查看最新的语法,即:

 const smtpConfig = {
     host: 'smtp.gmail.com',
     port: 465,
     secure: true, // use SSL
     auth: {
       user: 'user@gmail.com',
       pass: 'pass'
     }
 }

note:

 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(在这种情况下可能不是问题,但在其他类似情况下)。

同时确认用户运行节点有权限使用邮件程序。