错误:主机名/ IP与证书的替代名称node.js不匹配

sar*_*rya 2 nodemailer

我想使用nodemailer从应用程序发送电子邮件,我的代码如下所示:

var smtpTransport = nodemailer.createTransport(smtpTransport({
          pool: true,
        host: 'smtp.myemailserver.com',
        port: 587,
        auth: {
            user: 'user@myDomain.com',
            pass: '******'
        }
}));
var mailOptions = {
    from: 'user@myDomain.com',
    to: 'user2@gmail.com',
    subject: 'test ',
    text: 'Hello world ',
    html: '<b>Hello world </b>'
    };

smtpTransport.sendMail(mailOptions, function(error, info){
    if(error){
       console.log(error);
    }else{
    console.log('Message sent: ' + info.response);
    }
});
Run Code Online (Sandbox Code Playgroud)

但我得到我无法弄清的错误:

 [Error: Hostname/IP doesn't match certificate's altnames: "Host: smtp.myemailserver.com. is not in the cert's altnames: DNS:secure.emailsrvr.com, DNS:www.secure.myemailserver.com"]
      reason: 'Host: smtp.myemailserverr.com. is not in the cert\'s altnames: DNS:secure.myemailserver.com, DNS:www.myemailserver.com',
      host: 'smtp.myemailserver.com.',
      cert: 
       { subject: { OU: [Object], CN: 'secure.myemailserver.com' },
         issuer: 
          { C: 'GB',
            ST: 'Greater Manchester',
            L: 'Salford',
            O: 'COMODO CA Limited',
            CN: 'COMODO RSA Domain Validation Secure Server CA' },
         subjectaltname: 'DNS:secure.emailsrvr.com, DNS:www.secure.myemailserver.com',
         infoAccess: { 'CA Issuers - URI': [Object], 'OCSP - URI': [Object] }
Run Code Online (Sandbox Code Playgroud)

我试图添加

tls { 
rejectUnauthorized: false 
} 
Run Code Online (Sandbox Code Playgroud)

到电子邮件选项,但是导致阻止我的电子邮件,所以请提供任何帮助

Jac*_*wes 6

不确定是否像问题中一样在代码中缺少冒号,但应为:

tls: { 
    rejectUnauthorized: false 
}
Run Code Online (Sandbox Code Playgroud)

以我的经验,这就是解决证书名称不匹配所需要的。整个运输选项应如下所示:

var smtpTransport = nodemailer.createTransport(smtpTransport({
    pool: true,
    host: 'smtp.myemailserver.com',
    port: 587,
    auth: {
        user: 'user@myDomain.com',
        pass: '******'
    },
    tls: {
        rejectUnauthorized: false
    }
Run Code Online (Sandbox Code Playgroud)

另外请记住,这会使您容易受到SSL的MITM攻击