n8n Email节点发送邮件失败?看看这些常见错误原因

2026-02-08 18 0

问题复现:为什么你的邮件发不出去?

作为N8N大学的首席主编,笔者见过太多同学在刚上手n8n时,满怀信心地拖拽出一个 Email 节点,配置好SMTP服务,结果运行到那里却是一片刺眼的红色。

最常见的报错通常长这样:

  • Error: Invalid login: 535 5.7.8 Username and Password not accepted
  • Connection timed out
  • getaddrinfo ENOTFOUND smtp.gmail.com

这种感觉笔者非常理解:明明在网页端登录邮箱测试是好好的,为什么到了n8n里就不行?别急,90%的“发送失败”其实不是n8n的锅,而是配置细节没对齐。

原因分析:大白话讲透SMTP那点事

首先,我们要明白 Email 节点本质上是一个“邮差”。你给了它地址(SMTP服务器),它就去敲门送信。如果它失败了,通常只有三个原因:

  1. 门牌号错了(认证失败):你给的用户名或密码不对,或者该服务商(如Gmail)禁止了“不够安全的应用”登录。
  2. 路太远找不到(网络不通):n8n运行的环境(比如Docker容器)连不上外网的SMTP端口。
  3. 信封写错了(格式问题):收件人地址格式不对,或者附件体积超限。

接下来,我们针对这三个痛点,逐一击破。

解决方案一:搞定“不够安全的应用”(Gmail/Outlook必看)

这是新手最容易踩的坑,尤其是使用Gmail免费邮箱的用户。直接使用你的邮箱账号和密码登录 Email 节点,通常会直接报 535 Error

原因: Google和微软为了安全,默认禁止第三方客户端(如n8n)使用账号密码直接登录。

解决步骤:

  1. 开启两步验证:登录你的Google账号安全设置,必须先开启两步验证(2FA)。
  2. 生成“应用专用密码”:在两步验证开启后,找到“应用专用密码”选项。生成一个16位的随机密码。
  3. 配置n8n节点:在 Email 节点的 Credentials(凭据)中,密码一栏填入刚才生成的16位密码,而不是你的邮箱登录密码。

笔者注: 如果你使用的是企业版Gmail或Outlook,有时还需要管理员在后台开启IMAP/SMTP服务权限,这点千万别忽略。

解决方案二:解决网络连通性(Docker环境必读)

如果你的n8n是运行在Docker容器里的,经常会遇到 Connection timed out 或者 ENOTFOUND 错误。

原因: Docker容器默认的网络是隔离的,或者容器内部的DNS解析出了问题。特别是国内服务器连接海外SMTP(如Gmail)时,还可能涉及防火墙拦截。

解决步骤:

  1. 检查DNS配置:在启动Docker容器时,显式指定DNS服务器。例如,在 docker run 命令中添加 --dns 8.8.8.8--dns 114.114.114.114
  2. 使用本地SMTP转发服务(推荐):国内服务器连接海外SMTP极不稳定。笔者建议使用阿里云、腾讯云提供的邮件推送服务(SES),或者搭建一个本地的SMTP中继服务(如Postfix),让n8n先发给本地中继,再由中继发给目标邮箱。
  3. 测试端口连通性:进入容器内部(docker exec -it n8n bash),使用 telnet smtp.gmail.com 587 测试端口是否通。如果不通,那就是防火墙或网络问题。

解决方案三:检查节点参数与凭据配置

排除了网络和认证,剩下的往往是配置细节。n8n的 Email 节点支持多种协议(SMTP, Gmail, Outlook等),选错协议也会导致失败。

关键检查点:

  • 协议选择: 如果你手动配置SMTP,请确保选择了 SMTP 协议,而不是 Gmail(后者是Google的专有API,需要OAuth认证,配置更复杂)。
  • 端口号: 常用端口是 465(SSL加密)和 587(TLS加密)。很多云服务商默认封禁了25端口,导致发信失败。建议优先尝试587端口。
  • Host/Hosts: 填写SMTP服务器地址时,不要带协议头(如 smtp.exmail.qq.com,而不是 http://smtp.exmail.qq.com)。
  • 并发设置: 如果你在短时间内发送大量邮件,可能会触发服务商的频率限制(Rate Limit)。在 Email 节点设置中,适当增加发送间隔,或者使用 Split in Batches 节点来控制批次。

预防措施:如何避免再次踩坑?

作为N8N大学的老学长,我建议你在正式运行自动化流程前,养成以下习惯:

  1. 先测试,后上线:不要直接在复杂的工作流中测试邮件。新建一个简单的 Workflow,只放一个 Start 节点和一个 Email 节点,专门用来调试凭据。
  2. 善用 Debug 节点:在 Email 节点前插入一个 Debug 节点,检查输出的数据结构。有时候报错不是因为发信本身,而是因为你要发送的变量(比如收件人字段)是空的。
  3. 记录日志:在工作流末尾添加一个 IF 节点,判断 Email 节点是否有错误输出,如果有,将错误信息记录到数据库或钉钉/飞书机器人,方便及时排查。

FAQ 问答

Q1: 使用n8n的Email节点发送邮件收费吗?
A: n8n软件本身是开源免费的(自托管版本)。但发送邮件需要依赖第三方SMTP服务(如Gmail、SendGrid、阿里云邮件推送),这些服务商通常有免费额度,超出后收费。n8n本身不产生费用。

Q2: 为什么本地测试能发出去,部署到服务器上就发不出去?
A: 这通常是网络环境差异导致的。本地网络通常没有端口限制,而服务器(尤其是云服务器)的25端口默认被封禁。请检查服务器防火墙设置,并切换到587端口。

Q3: Email节点支持发送HTML格式的邮件吗?
A: 支持。在 Email 节点的配置中,将 Text 字段填写为HTML代码(如 <h1>标题</h1>),并将字段类型设置为 string 即可。或者使用 HTML Email 节点(部分版本中需通过自定义请求实现)。

总结与资源

邮件发送失败虽然让人头疼,但只要掌握了“认证、网络、配置”这三板斧,99%的问题都能迎刃而解。记住,n8n只是一个强大的搬运工,真正的通路需要你正确铺设。

如果你在配置过程中遇到了具体的报错代码,欢迎在N8N大学社区发帖,附上你的节点截图,笔者会第一时间为你诊断。保持耐心,自动化就在眼前。

相关文章

n8n Error Handling 节点报错太心烦?试试这些更灵活的替代方案
n8n 节点报错了?用 Error Handling 让它自动重试并通知你
n8n Wait节点在数据同步中的延迟控制实战
n8n Wait节点免费版:我能用它实现定时任务吗?
n8n Error Handling节点:当自动化流程“翻车”时,如何让它自动“扶起来”?
n8n Error Handling节点报错常见问题解决

发布评论