场景导入:告别“点点点”,拥抱自动化邮件发送
你是不是遇到过这样的场景:每天早上第一件事,就是打开邮箱,复制昨天的数据,然后登录你的邮件系统,手动填写收件人、主题和内容,最后点击发送。如果只有几封邮件还好,但如果面对的是几十甚至上百封个性化邮件呢?
手动操作不仅效率低下,而且极易出错。漏发、错发、格式混乱,都是家常便饭。作为 N8N大学 的首席主编,我深知这种重复劳动的痛苦。今天,笔者就带你从零开始,彻底解决这个问题。
我们将利用 n8n 的 Email 节点,结合 API 调用,实现一套全自动的邮件发送系统。无论你是发送日报、周报,还是给客户发送个性化通知,这套方案都能让你从繁琐的点击中解放出来。
准备工作:硬核配置清单
在开始动手之前,我们需要准备好“弹药”。以下是必须具备的硬性条件:
- 一个 n8n 环境:可以是本地安装,也可以是 Docker 部署,或者直接使用 N8N大学 推荐的云服务。
- 发件邮箱账户:你需要拥有一个可以发送邮件的邮箱(如 Gmail、Outlook、QQ 邮箱或企业自建邮局)。
- SMTP 授权码或 API Key:这是关键。大多数邮箱(尤其是 Gmail 和 QQ)不再支持直接使用密码登录,而是需要“授权码”或“应用专用密码”。企业邮局通常需要 SMTP 服务器地址和端口号。
- 测试数据源:为了让流程跑通,你需要准备一份简单的 JSON 数据或 Excel 文件作为邮件内容的输入。
准备好这些,我们就可以进入核心实操环节了。
核心实操:从配置到发送的完整流程
笔者将整个流程拆解为 3 个关键步骤。请跟随我的节奏,一步步配置你的自动化流程。
步骤一:配置 n8n 凭证 (Credentials)
在 n8n 中,凭据是存储敏感信息(如密码、API Key)的安全地方。不要把密码硬编码在流程里。
- 进入 n8n 左侧菜单的 Credentials(凭据)。
- 点击 Add Credential,选择 Email (SMTP)。
- 填写以下信息(以 QQ 邮箱为例):
- Host:
smtp.qq.com - Port:
465(SSL) 或587(TLS) - User: 你的完整邮箱地址
- Pass: 你的 SMTP 授权码(不是登录密码!)
- Host:
如果是 Gmail,你需要开启“两步验证”并生成“应用专用密码”。配置完成后,点击 Save,系统会自动测试连接。
步骤二:构建数据输入与处理流
邮件内容通常来自外部数据。我们先模拟一个 JSON 数据源。
- 在画布中添加一个 Set 节点(或 Manual Trigger + Set)。
- 在 Set 节点的 Parameters 中,添加以下 JSON 数据:
[
{
"name": "张三",
"email": "zhangsan@example.com",
"project": "项目A"
},
{
"name": "李四",
"email": "lisi@example.com",
"project": "项目B"
}
]
这将模拟我们要发送给不同人的两封邮件。点击 Execute Node,确保数据正确流出。
步骤三:配置 Email 节点并发送
这是最关键的一步。我们需要添加 Email (SMTP) 节点。
- 添加 Email (SMTP) 节点,并连接到 Set 节点之后。
- 在 Parameters 中:
- Credentials: 选择刚才创建的凭据。
- To: 点击右侧的 Expression(表达式图标),输入
{{ $json.email }}。这样 n8n 会自动读取数据中的邮箱地址。 - Subject: 同样使用表达式,例如
你好 {{ $json.name }},这是你的项目 {{ $json.project }} 报告。 - Text: 这里写邮件正文。同样支持表达式,例如
亲爱的 {{ $json.name }},附件是你的详细数据。。 - Attachments (Optional): 如果需要发送附件,可以在此处配置文件路径或二进制数据流。
配置完成后,点击 Execute Workflow。如果配置正确,你的收件箱里应该会收到两封个性化邮件。
避坑指南:实战中容易忽略的细节
在 N8N大学 的过往实战中,很多同学在配置 Email 节点时会遇到“看起来配置对了,但就是发不出去”的情况。以下是两个最常见的坑:
1. 端口与加密协议不匹配
很多同学在配置端口时随意填写。如果你的 SMTP 服务要求 SSL,端口通常是 465;如果是 TLS,端口通常是 587。在 n8n 的 Email 节点中,如果你选择了 465 端口,请确保下方的 Secure Connection(或 SSL/TLS 选项)处于开启状态。否则会报Connection timeout或Connection refused错误。
2. 收件人字段的表达式陷阱
在 To 字段中,如果你直接输入了字符串,n8n 只会发送给固定的人。当你使用表达式{{ $json.email }}时,如果上游数据中存在空值或格式错误的邮箱(例如没有 @ 符号),该节点会直接报错并停止运行。建议在 Email 节点前加一个 IF 节点或 Filter 节点,过滤掉无效的邮箱地址。
FAQ 问答:你可能遇到的疑惑
Q1: 为什么我的 Gmail 发送失败,提示“Authentication failed”?
这是最经典的问题。Gmail 现在非常严格,普通的密码登录已被禁用。你需要去 Google 账户设置中开启“两步验证”,然后生成一个“应用专用密码”。在 n8n 的 SMTP 凭据中,使用这个专用密码,而不是你的日常登录密码。
Q2: 我想发送 HTML 格式的精美邮件,该怎么设置?
在 Email (SMTP) 节点中,有一个 HTML 字段(通常在 Text 字段下方)。你可以在那里输入 HTML 代码。注意,如果同时填写了 Text 和 HTML,收件人的邮件客户端会优先展示 HTML 内容。
Q3: n8n Email 节点支持发送给多人吗?
支持。在 To 字段中,你可以直接输入多个邮箱地址,用逗号分隔(例如 test1@qq.com, test2@qq.com)。如果使用表达式,你需要确保上游数据是一个数组,且每个对象都包含有效的 email 字段。
总结与资源
通过 n8n 的 Email 节点,我们将原本需要手动操作的邮件发送流程,转化为了完全自动化的 API 调用流程。这不仅提升了效率,更保证了数据的准确性和及时性。
掌握了基础配置后,你可以尝试更高级的玩法,比如结合 Google Sheets 节点读取表格数据,或者使用 HTML 节点渲染复杂的邮件模板。
如果你在实操过程中遇到任何报错,欢迎在 N8N大学 的社区中搜索相关关键词,或者直接留言。自动化之路虽有坑点,但每解决一个,你的工作效率就提升一个台阶。