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

Firebase Functions触发Nodemailer发送Outlook365邮件失败求助

解决Firebase Functions + Nodemailer对接Outlook 365邮件发送失败的问题

你遇到的ENOTFOUND错误核心原因是SMTP服务器地址配置错误,加上端口和加密方式不匹配,导致DNS解析失败。咱们一步步调整配置,解决这个问题:

1. 修正核心SMTP配置(最关键)

Outlook 365的官方SMTP服务器地址是smtp.office365.com,不是你用的outlook.office365.com,这就是DNS解析失败的直接原因。同时端口和加密方式也要对应:

  • 端口587对应secure: false(使用STARTTLS加密)
  • 端口465对应secure: true(直接SSL加密)

修正后的代码:

var transporter = nodemailer.createTransport(smtpTransport({
  host: 'smtp.office365.com', // 替换为正确的SMTP服务器地址
  port: 587,
  secure: false, // 587端口必须设为false,后续会自动启用STARTTLS
  auth: {
    user: 'your-outlook-email@domain.com',
    pass: 'your-password' // 如果开启了MFA,这里要用应用专用密码
  },
  tls: {
    rejectUnauthorized: false // 保留这个设置避免证书验证问题
  }
}));

2. 用service: 'Outlook365'简化配置

如果你尝试过用service: "Outlook365"但失败,大概率是旧版Nodemailer的配置映射问题,确保你用的是最新版Nodemailer,然后用以下简化配置(Nodemailer会自动填充正确的SMTP参数):

var transporter = nodemailer.createTransport({
  service: 'Outlook365',
  auth: {
    user: 'your-outlook-email@domain.com',
    pass: 'your-password-or-app-password'
  },
  tls: {
    rejectUnauthorized: false
  }
});

3. 排查账号与权限问题

  • 如果你的Outlook账号开启了多重身份验证(MFA),普通密码会失效,必须使用应用专用密码(在微软账户安全设置里生成)
  • 企业版Outlook 365需要确认管理员是否允许SMTP客户端访问,有些租户会限制第三方邮件客户端连接

4. 排除Firebase Functions网络环境问题

  • 先在本地运行Firebase Functions(用firebase emulators:start)测试邮件发送,如果本地能成功,说明云端函数的网络配置可能有问题(比如VPC限制、出站规则)
  • 免费版Firebase Functions默认允许外部网络访问,但若你配置了自定义VPC,需要确保允许访问smtp.office365.com的587/465端口

补充说明

你错误日志里显示端口是587,但你代码里写的是25,这可能是Nodemailer自动尝试 fallback 到常用端口,但因为host地址错误,还是会解析失败。优先修正host地址,这是解决问题的核心。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:23:58