别再手动打包发邮件了,这才是2024年的正确姿势
你是不是也经历过这样的场景:每天都要从不同的系统里导出报表,然后登录邮箱,一个个添加附件,填写标题,最后点击发送。如果只是发一次还好,但如果是每天都要重复,且文件名还带着乱码一样的时间戳,那简直是场噩梦。
笔者在做电商运营分析时,就曾被“日报”折磨得不行。每天要把后台的销售数据、客服的聊天记录导出,再手动发给老板。直到我用 n8n 搭建了自动化流程,这一切才变成了“喝口咖啡,报告已送达”的从容。
今天,N8N大学就带你彻底搞定 Email 节点发送附件。从零开始,手把手教你如何通过 n8n 自动化发送带附件的邮件,无论是 PDF 报表、Excel 数据还是图片,通通都能搞定。
准备工作:你需要这三样东西
在开始之前,我们需要准备好“弹药”。别担心,门槛很低:
- 一个 n8n 环境:可以是官方的 Cloud 版本,也可以是本地部署的 Docker 版本。
- 一个发件邮箱:推荐使用 Gmail、Outlook 或者企业邮箱。如果你是国内的 QQ 邮箱或 163 邮箱,记得先在设置里开启 SMTP 服务并获取“授权码”。
- 一个附件来源:这篇文章里,为了演示最通用的场景,我会用 HTTP Request 节点去下载一个网络上的图片作为附件。但在实际工作中,你的附件可能来自 Google Sheets、Read Binary File 或者 Airtable。
核心实操:三步搞定附件邮件发送
我们将搭建一个简单的流程:获取文件 -> 发送邮件。这是最稳健的结构。
第一步:获取二进制数据(附件)
在 n8n 中,附件属于“二进制数据”(Binary Data)。这意味着你不能直接把文件路径丢进去,必须把文件内容本身读取出来。
拖拽一个 HTTP Request 节点到画布上:
- URL:填写一个文件的下载链接(例如:https://n8n.io/logo.png)。
- Response Format:选择 File(二进制文件)。
点击“Test step”运行一下。如果配置正确,你会看到 Output Data 里出现了二进制数据的标识(通常是一个二进制图标)。这就是我们要发送的附件。
第二步:配置 Email 节点(关键步骤)
这是最容易出错的地方。拖拽一个 Email (Send) 节点(注意:不是简单的 SMTP,而是集成了更多功能的 Email 节点)。
首先配置发件人信息(Credential):
- Host/Port:填入 SMTP 服务器地址(如 Gmail 是 smtp.gmail.com:587)。
- User/Pass:填入你的邮箱账号和密码(如果是 QQ 邮箱,填授权码)。
然后配置邮件内容:
- From Email:发件人地址。
- To Email:收件人地址。
- Subject:邮件标题(支持动态数据,比如“日报 - {{ $today }}”)。
- Text:邮件正文。
第三步:挂载附件(灵魂所在)
很多新手在这里卡住,因为不知道去哪里填附件。请看 Email (Send) 节点的参数区域:
找到 Attachments (Binary File) 这一栏。点击右侧的“Add Attachment”按钮。
这里需要配置两个核心参数:
- Property Name:默认是
data。这代表 n8n 会去寻找上一个节点(也就是 HTTP Request)输出的二进制数据。 - File Name:这里一定要填!否则邮件发出去可能没有后缀名,对方打不开。你可以填死板的
report.png,也可以填动态的sales_report_{{ $now }}。
连接节点:将 HTTP Request 节点的 Output 连接到 Email 节点的 Input。
点击 Execute Workflow。搞定!去你的收件箱看看,带附件的邮件应该已经静静躺在那里了。
避坑指南:实战中容易报错的细节
虽然步骤简单,但实战中总有坑。以下是 N8N大学帮你总结的两个高频坑点:
1. 附件名为乱码或无后缀
很多同学在 Attachments (Binary File) 里忘记填写 File Name。n8n 只负责传输二进制流,但并不知道这是什么文件。如果不指定文件名,收件端可能会将其识别为 .bin 文件或直接报错。切记:**File Name 必须包含扩展名**(如 .pdf, .xlsx)。
2. Gmail 的“不够安全的应用程序”报错
如果你使用 Gmail,直接用密码登录很可能会报错 535 5.7.8 Username and Password not accepted。这是因为 Google 对安全性要求极高。
解决方案:
- 开启 Google 账号的“两步验证”。
- 去 Google Cloud Console 创建一个 OAuth 2.0 凭证(或者直接在 n8n 的 Gmail OAuth 凭证配置里登录授权)。虽然麻烦一点,但这是最安全且不会被封号的方式。
进阶玩法:让附件更智能
掌握了基础,我们来看看如何应对复杂需求。
多附件发送
如果你要一次性发送多个文件(例如:导出了 3 个 Excel 表格),你不需要创建 3 个 Email 节点。只需在 HTTP Request(或读取文件)节点后加一个 Split Out 或者确保你的二进制数据是一个数组。
在 Email 节点的 Attachments 处,直接映射整个二进制数组字段,n8n 会自动将其打包成多个附件发送。
基于表格数据的动态附件
这是最常用的场景:从 Google Sheets 读取一行数据,生成一个 PDF,然后发给对应的邮箱。
流程如下:
- Google Sheets Trigger(触发)。
- Generate PDF(或 Create Spreadsheet File):这里会生成一个新的二进制文件。
- Email (Send):将上一步生成的文件作为附件。
注意:在 Email 节点中,如果上一步输出的二进制字段名不是 data,你需要修改 Property Name 以匹配上游节点的输出字段。
FAQ 问答
Q1: 为什么我发送的附件在手机上打不开?
A: 这通常是因为文件名缺少后缀名,或者文件本身在生成过程中损坏了。请确保在 Email 节点的 Attachment 设置中明确填写了 File Name(例如 report.pdf),并检查上游节点是否成功生成了文件。
Q2: n8n 可以发送超大附件吗?(比如 50MB)
A: 可以,但受限于 SMTP 服务商的限制。大多数邮箱(如 Gmail)限制单封邮件 25MB。如果你的附件过大,建议使用 Google Drive 或 AWS S3 节点先上传文件,然后在邮件正文中放入下载链接,而不是直接作为附件发送。
Q3: 如何发送 HTML 格式的精美邮件?
A: 在 Email (Send) 节点中,不要使用 Text 字段,而是使用 HTML 字段。你可以直接在 HTML 字段中编写 HTML 代码,或者引用一个变量(该变量包含 HTML 字符串),这样发送出去的邮件就会渲染出精美的样式。
总结与资源
通过 Email (Send) 节点配合二进制数据的流转,n8n 将繁琐的邮件发送工作变得极其简单且可扩展。无论是日报周报,还是客户通知,只要掌握了“获取二进制 -> 挂载附件”这一核心逻辑,你就能解锁无数自动化场景。
如果你在配置过程中遇到任何报错,或者想了解更多关于 n8n 的硬核技巧,欢迎访问 N8N大学 (n8ndx.com),这里有更多实战案例等着你。
现在,关掉你的邮箱客户端,让 n8n 帮你打工吧。