You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python检测邮件主题含指定关键词后转发初始自动化邮件

问题解决:Outlook邮件自动检测回复并转发

需求说明

通过Python发送主题为「Daily Test Results are completed and please find the Test Results」的自动化邮件后,需完成以下操作:

  • 等待并检索回复邮件,回复邮件主题需包含后缀CHECK OK、VERIFIED、SEND、PASS_SEND中的任意一个(示例主题:「Daily Test Results are completed and please find the Test Results - CHECK OK」)
  • 收到符合要求的回复后,将最初发送的原邮件转发给指定的多个用户

当前存在的问题

  1. 仅能设置单个关键词匹配回复邮件主题,无法使用关键词列表进行多条件匹配
  2. 已能匹配到目标回复邮件,但不知道如何找到并转发最初发送的原邮件

解决方案与完整代码

1. 多关键词匹配实现

定义关键词列表,通过any()函数判断邮件主题是否包含列表中的任意一个关键词,同时结合原邮件主题前缀判断,避免误匹配无关邮件。

2. 找到原邮件并转发

  • 原邮件默认保存在「已发送邮件」文件夹(Outlook中对应索引为5)
  • 通过原邮件主题精确匹配定位(可结合发送时间、收件人等条件提高准确性)
  • 使用Outlook的Forward()方法创建转发邮件,批量添加收件人后发送
import win32com.client as win32

# 配置参数
ORIGINAL_SUBJECT = "Daily Test Results are completed and please find the Test Results"
REPLY_KEYWORDS = ["CHECK OK", "VERIFIED", "SEND", "PASS_SEND"]
FORWARD_RECIPIENTS = ["user1@example.com", "user2@example.com"]  # 替换为实际转发目标用户

def check_reply_and_forward():
    # 初始化Outlook客户端
    outlook = win32.Dispatch('Outlook.Application').GetNameSpace('MAPI')
    
    # 筛选收件箱中符合要求的回复邮件
    inbox = outlook.GetDefaultFolder(6)
    valid_replies = [
        msg for msg in inbox.Items
        if ORIGINAL_SUBJECT in msg.Subject and any(keyword in msg.Subject for keyword in REPLY_KEYWORDS)
    ]
    
    if not valid_replies:
        print("未找到符合要求的回复邮件")
        return
    
    # 定位已发送邮件中的原邮件
    sent_folder = outlook.GetDefaultFolder(5)
    original_mail = None
    for msg in sent_folder.Items:
        if msg.Subject == ORIGINAL_SUBJECT:
            original_mail = msg
            break
    
    if not original_mail:
        print("未找到需要转发的原邮件")
        return
    
    # 执行转发操作
    forward_mail = original_mail.Forward()
    # 批量添加收件人
    for recipient in FORWARD_RECIPIENTS:
        forward_mail.Recipients.Add(recipient)
    # 可选:添加转发备注
    # forward_mail.Body = "测试结果已确认,转发给相关人员查看\n" + forward_mail.Body
    forward_mail.Send()
    
    print("原邮件已成功转发给指定用户")

if __name__ == '__main__':
    check_reply_and_forward()

代码关键说明

  • ORIGINAL_SUBJECT:原邮件的精确主题,用于定位原邮件和过滤回复邮件
  • REPLY_KEYWORDS:需匹配的回复后缀关键词列表,any()函数实现多条件命中判断
  • sent_folder = outlook.GetDefaultFolder(5):Outlook中「已发送邮件」文件夹的固定索引
  • original_mail.Forward():生成原邮件的转发副本,可修改收件人、正文等内容
  • forward_mail.Recipients.Add():逐个添加转发目标用户,支持批量配置

内容的提问来源于stack exchange,提问作者Bharath

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 05:20:25