n8n 转发 Gmail 邮件到 telegram
TL;DR
- 部署 n8n
- 创建 谷歌服务
- 创建 n8n workflow
- 设置 Gmail Trigger
- 设置转发到 telegram
部署 n8n
这里使用的是 docker-compose
部署,同时,因为我之前就已经完成了内网穿透,所以跟公网访问的效果是一样的,如果你不知道怎么穿透,请使用 公网服务器 部署或者是使用 n8n 的 cloud 服务
使用 docker-compose
部署 n8n 需要两个文件,docker-compose.yml
和 .env
docker-compose.yml
# docker-compose.yml
version: "3.7"
services:
n8n:
image: docker.n8n.io/n8nio/n8n
restart: always
# ports:
# - "127.0.0.1:5678:5678"
environment:
- N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME}
- N8N_PORT=5678
# - N8N_PROTOCOL=https # 因为我在外部处理了 https, 所以把它的注释了
- NODE_ENV=production
- WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/
- GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
volumes:
- ./n8n_data:/home/node/.n8n # 把 n8n 的数据挂在到当前的目录下的 n8n_data 中
.env
# 你的域名
DOMAIN_NAME=example.com
# 设置访问 n8n 的域名
SUBDOMAIN=n8n
# 上面的例子设置之后访问 n8n 的域名是 https://n8n.example.com
# 设置时区
GENERIC_TIMEZONE=Asia/Shanghai
# The email address to use for the SSL certificate creation
SSL_EMAIL=user@example.com # 不知道干啥的,应该是申请 SSL 的,但是我不需要,就没有改了
- 启动 n8n 容器
docker-compose up -d
然后访问 https://n8n.example.com 就可以进入你部署的 n8n 了,要注意,你时候加了 SSL ,如果没有的话,访问的是 http://n8n.example.com
创建 Google OAuth2 single service
官方文档在这👉 https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/
原理是创建一个 OAuth App ,把谷歌账号授权给这个 App ,然后App 开启 Gmail 的相关权限,App 就可以获得 Gmail 的访问了
如果你的语言不是中文的,可以在右上角找入口把语言改成中文,或者对照上方的官方文档
开始我们的操作吧~
- 首先,点击菜单,找到 API 和服务 ⇒ 凭据,进入进入(如下图)

Image.png
- 点击 创建凭据,选择 OAuth 客户端 ID,然后填写好创建的表单(如下图)

Image.png
- 填写表单,应用网络类型选择“Web 应用”,名称随便填。已获授权的重定向 URI 填写 n8n 生成的地址,形如 https://n8n.example.com/rest/oauth2-credential/callback 把 https://n8n.example.com 修改成你自己的 n8n 网址(如果你不想自己写,可以先到后面找一下 n8n 帮你生成的)(如下图)

Image.png
- 创建完成之后,会弹窗,::记下:: 客户端 ID(Client ID) 和 客户端密钥(Client Secret)

Image.png
- 创建了 App 之后,你可能需要补充一个授权页面,我已经填写过了,所以没有提示,不然在后面的编辑 OAuth App 上方会有提示(如下图)

Image.png
- 点击添加用户,把你需要转发的 Gmail 邮箱填写进去(如下图)

Image.png
- 启动 Gmail API,在菜单点击 库,然后进入到一个页面,在搜索框输入 gmail api 回车搜索,找到 gmail api 点击进去,点击启用

Image.png

Image.png

Image.png
- 至此,创建 Google OAuth2 single service 已经完成了(如果没有记错的话,逃~)
创建 n8n workflow
- 进入首页,点击 Add Workflow

Image.png
- 会有一个默认的 trigger ,把它删掉,我们需要的是 Gmail trigger

Image.png
- 删除了之后,点击下图 的 1,在 2 的搜索框输入 gmail ,点击出现的 “Gmail”

Image.png
- Gmail 的 trigger 只有一个,那就是收到邮件,选择就好了

Image.png
- 点击之后,需要把上面创建的 Google OAuth2 single service 绑定进去

Image.png
- 点击 “Select Credential”,点击 “Create New Credential”

Image.png
- 就会出现下图的表单,需要把上面创建的信息填到这里来,这里的 OAuth Redirect URL 就是在创建 App 的时候需要用到的 ::已获授权重定向URI::

Image.png
- 添加好了之后,可以进行测试,会返回 Gmail 的最新一封邮件,如果出现错误的话,需要检查你的 n8n 时候可以公网访问 等等,要么是创建 OAuth App 的时候有什么不对,要么就是 n8n 填错了 Client ID 或者 Client Secret

Image.png
- 设置转发到 telegram
- 找到 telegram action

Image.png
2. 选择发送消息,这里我选的是 text ,具体要什么的话,可以根据自己的需求,慢慢调试

Image.png
- 创建 telegram 的凭证,这里比较简单,根据创建 telegram bot 的教程来就可以了,获取到 Access Token 跟 Chat ID

Image.png

Image.png
- 设置要转发邮件的内容,我们需要先知道可以获得邮件的什么内容才能把对应的字段转发过去,所以需要点击一下 “Execute previous nodes” 来触发 Gmail 收到邮件的时候的场景,获得数据

Image.png
4. 然后就可以在左边把要发的数据拖到右边的 Text 去(如果要添加更多的字段的话,应该是 Additional Fields, 这里我也还没有研究🤪)

Image.png
5. 保存之后回到整个 Workflow 页面,点击底部的测试,就会开始测试整个 Workflow ,顺利的话,你的 tg 就会收到机器人给你发的消息,到这里就成功啦~
6. 假的! 还需要在右上角对这个 Workflow 进行启用

Image.png
END
到这里就结束啦~ Enjoy it