You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nodemailer无法获取本地颁发者证书问题求助(Outlook邮箱)

解决Nodemailer连接Outlook SMTP的证书与协议错误问题

我来帮你拆解下你遇到的这两个问题,都是Outlook SMTP配置里的常见误区:

第一个错误:Error: unable to get local issuer certificate

这个错误表面上是证书不被信任,但核心问题其实是你的SMTP主机地址写错了,而且用了不合适的端口。Outlook(包括Office 365)的官方SMTP主机是smtp.office365.com,不是你写的smtp.outlookhost。错误的主机导致你连接到了非官方服务器,证书自然无法被本地信任。

另外,25端口通常是邮件中继端口,很多服务商都封禁了这个端口用于客户端发送邮件,Outlook官方也推荐使用465或587端口。

第二个错误:Error: SSL23_GET_SERVER_HELLO:unknown protocol

你修改配置时把secure: true和port:25搭配了,这是矛盾的:secure: true表示直接通过SSL连接服务器,但25端口默认不支持直接SSL,它要么是明文连接,要么通过STARTTLS升级为加密连接。这种搭配就导致了协议不匹配的错误。

正确的配置方案

根据Outlook官方的SMTP规范,给你两种可行的配置:

方案1:使用465端口(直接SSL加密)

var transporter = nodemailer.createTransport(smtpTransport({ 
    host: 'smtp.office365.com', 
    port: 465, 
    auth: { 
        user: '你的Outlook邮箱地址', 
        pass: '你的密码或应用密码' // 重要:如果开启了两步验证,必须用应用密码
    }, 
    secure: true, 
    logger: true, 
    debug: true 
}));

方案2:使用587端口(STARTTLS加密)

var transporter = nodemailer.createTransport(smtpTransport({ 
    host: 'smtp.office365.com', 
    port: 587, 
    auth: { 
        user: '你的Outlook邮箱地址', 
        pass: '你的密码或应用密码' 
    }, 
    secure: false, 
    requireTLS: true, // 强制使用STARTTLS升级加密连接
    logger: true, 
    debug: true 
}));

额外注意事项

  1. 证书问题:只要使用官方的smtp.office365.com主机,它的SSL证书是全球信任的,不需要手动提供证书。之前的证书错误完全是因为主机地址错误导致的,不要随意设置rejectUnauthorized: false,这会降低连接的安全性。
  2. 两步验证:如果你的Outlook账号开启了两步验证,必须使用应用密码登录,而不是普通的登录密码。应用密码可以在微软账号的安全设置里生成。
  3. 端口可用性:如果你的网络环境封禁了465或587端口,可以联系服务商确认,或者尝试使用其他端口,但官方推荐的就是这两个。

内容的提问来源于stack exchange,提问作者Naveen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:15:00