Nodemailer - 无法获得本地颁发者证书

时间:2018-01-25 11:18:00

标签: node.js email security firewall nodemailer

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

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

3 个答案:

答案 0 :(得分:1)

也许这可能会对你有所帮助:
Not able to connect to outlook.com SMTP using Nodemailer

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

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

答案 1 :(得分:1)

  const transporter = nodemailer.createTransport({
    host: "smtp.outlookhost",
    port:  25,
    secure: false,
    tls: {rejectUnauthorized: false}
  });

最新答案,但这对于使用当前版本的nodemailer和Outlook主机的我来说是有效的。

答案 2 :(得分:0)

就我而言,nodemailer 找不到我们的公司 CA 证书。所以我设置了 ca 选项,它解决了这个问题。 CA 证书采用 PEM 格式,以 -----BEGIN CERTIFICATE----- 开头,以 -----END CERTIFICATE----- 结尾。

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')) ],
  },
});