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

时间:2015-01-27 22:24:00

标签: node.js email smtp postfix-mta nodemailer

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

谢谢!

2 个答案:

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

同时确认用户正在运行的节点有权使用该邮件程序。