Node.js NodeEmailer-无法获取本地颁发者证书

Node.js NodeEmailer-无法获取本地颁发者证书,node.js,email,security,firewall,nodemailer,Node.js,Email,Security,Firewall,Nodemailer,我正在尝试使用以下配置的NodeEmailer发送电子邮件: var transporter = nodemailer.createTransport(smtpTransport({ host: 'smtp.outlookhost', port: 25, auth: { user: '', pass: '' }, secure:false,

我正在尝试使用以下配置的NodeEmailer发送电子邮件:

var transporter = nodemailer.createTransport(smtpTransport({
          host: 'smtp.outlookhost',
          port: 25,
          auth: {
            user: '',
            pass: ''
          },
          secure:false,
          logger: true,
          debug: true
        }));
我得到这个错误:

Error: unable to get local issuer certificate
我正在使用outlook发送电子邮件。如何提供证书

修改了配置:

 var transporter = nodemailer.createTransport(smtpTransport({
              host: 'smtp.outlookhost',
              port: 25,
              auth: {
                user: '',
                pass: ''
              },
              secure:true,
              logger: true,
              debug: true,
              tls: {
              // do not fail on invalid certs
              rejectUnauthorized: false
            }
    }));
错误:

Error: 101057795:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:openssl\ssl\s23_clnt.c

也许这会对您有所帮助:

我会使用第二种方法,因为它更容易=D

var transport = nodemailer.createTransport("SMTP", {
    service: "hotmail",
    auth: {
        user: "user@outlook.com",
        pass: "password"
    }
});

回答晚了,但这对我使用当前版本的NodeEmailer和outlook主机有效。

在我的情况下,NodeEmailer找不到我们的公司CA证书。所以我设置了ca选项,它解决了这个问题。CA证书采用PEM格式,以
----开始证书------
开头,以
----结束证书------
结尾

const fs = require('fs');
const path = require('path');
const transporter = nodemailer.createTransport({
  host: 'smtp-server',
  port: 25,
  tls: {
    ca: [ fs.readFileSync(path.resolve(__dirname, 'ca.pem')) ],
  },
});
const fs = require('fs');
const path = require('path');
const transporter = nodemailer.createTransport({
  host: 'smtp-server',
  port: 25,
  tls: {
    ca: [ fs.readFileSync(path.resolve(__dirname, 'ca.pem')) ],
  },
});