如何将符合指定规则的收件邮件自动转发到特定Slack频道
GCP Google Groups 邮件规则转发至Slack频道实现方案
方案一:无代码轻量实现(适合简单规则)
- 第一步配置Slack端的邮件集成:进入目标Slack频道,找到频道设置里的「发送邮件至频道」功能,生成专属的频道收件邮箱地址,注意妥善保管该地址,避免泄露导致垃圾信息入频道。
- 第二步配置Google Groups转发规则:
- 进入你管理的Google Groups管理后台,打开「设置」-「邮件转发选项」
- 添加刚才生成的Slack频道邮箱为转发目标,完成Google Groups的验证流程
- 进入「规则」设置页,新建入站邮件规则,匹配条件选择「发件人地址」,填入你指定的特定发件地址,规则动作选择「转发至指定邮箱」,选中刚才添加的Slack频道邮箱即可。
本方案的缺点是规则匹配逻辑仅支持Google Groups自带的条件,无法做自定义内容过滤、格式转换等复杂操作。
方案二:基于GCP Cloud Functions 自定义实现(适合复杂规则需求)
- 第一步配置Google Groups投递到Cloud Pub/Sub:
- 在GCP控制台新建一个Pub/Sub主题,用于接收Google Groups的入站邮件
- 回到Google Groups管理后台,设置入站邮件全部投递到该Pub/Sub主题
- 第二步编写Cloud Functions处理逻辑:
触发方式选择关联刚才创建的Pub/Sub主题,运行环境可根据你的技术栈选Node.js/Python等,核心逻辑包含以下部分:- 解析Pub/Sub接收到的邮件原始数据,提取发件人、邮件主题、正文等字段
- 编写规则匹配逻辑,比如判断发件人是否在指定白名单内,匹配成功则执行下一步
- 调用Slack Webhook接口,把解析后的邮件内容按照你需要的格式组装后发送到目标频道
示例核心代码片段(Python):
import base64 import json import requests from email import policy from email.parser import BytesParser SLACK_WEBHOOK_URL = "你的Slack应用入站Webhook地址" ALLOWED_SENDERS = {"sender1@example.com", "sender2@example.com"} def forward_mail_to_slack(event, context): # 解析Pub/Sub的邮件数据 raw_mail = base64.b64decode(event['data']) msg = BytesParser(policy=policy.default).parsebytes(raw_mail) sender = msg['From'] # 规则匹配 if any(allowed_sender in sender for allowed_sender in ALLOWED_SENDERS): # 组装Slack消息 slack_msg = { "text": f"收到来自指定发件人的邮件:\n发件人:{sender}\n主题:{msg['Subject']}\n正文:{msg.get_body().get_content()}" } requests.post(SLACK_WEBHOOK_URL, json=slack_msg) - 第三步配置Slack入站Webhook:在Slack平台创建自定义应用,开启入站Webhook功能,获取对应目标频道的Webhook地址,填入上面的代码对应位置即可。
本方案支持任意自定义规则,除了发件人匹配外还可以实现关键词过滤、附件提取、@指定成员等扩展功能。
内容的提问来源于stack exchange,提问作者tiktok
相关产品推荐
相关产品推荐

