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

Firebase免费部署后Node.js Nodemailer出现ENOTFOUND错误求助

解决Firebase部署后Nodemailer连接Ethereal SMTP失败的问题

你遇到的getaddrinfo ENOTFOUND错误,核心原因其实是Firebase免费套餐(Spark计划)的网络限制,而非Node.js或Nodemailer本身的问题,我来帮你拆解原因和解决方案:

为什么本地正常,部署后出错?

本地运行firebase serve时,代码用的是你本地环境的网络,没有Firebase云函数的访问限制,所以能正常解析smtp.ethereal.email并建立连接。但部署到Firebase免费版云函数后,Spark计划禁止云函数发起对非Google服务的外部网络请求,导致DNS无法解析第三方SMTP服务器域名,从而抛出这个错误。

可行的解决方案

  • 升级到Firebase Blaze计划(按需付费)
    Blaze计划取消了外部网络请求的限制,允许云函数访问任何公开的互联网服务,包括Ethereal的SMTP服务器。这个计划有免费额度(每月前200万次云函数调用、5GB带宽等),测试场景下基本不会产生费用,是最直接的解决办法。

  • 切换到Google原生邮件服务(无需升级套餐)
    如果你不想升级,可以改用Google自家的邮件服务,比如Gmail(需要启用应用专用密码,且注意Gmail的发送限制)或Google Workspace邮箱。因为这些属于Google生态内的服务,免费套餐的云函数可以正常访问,配置Nodemailer时只需要替换SMTP参数为对应的Google服务器信息即可。

  • 额外调试建议(升级后仍有问题时)
    如果升级Blaze计划后还是遇到解析问题,可以在云函数中添加DNS调试代码,确认域名是否能正常解析:

    const dns = require('dns');
    dns.resolve('smtp.ethereal.email', (err, addresses) => {
      if (err) console.error('DNS解析失败:', err);
      else console.log('解析到的IP:', addresses);
    });
    

    同时检查Nodemailer的SMTP配置是否完全正确,比如主机名、端口(587是正确的)、认证账号密码是否和Ethereal提供的一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:54:32