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

利用Win32com限制Outlook共享邮箱邮件搜索范围并保存附件

实现Outlook共享邮箱的精准邮件筛选与附件保存

直接用Outlook的Restrict方法构造筛选条件,避免遍历整个收件箱,效率更高。以下是针对需求的完整实现代码:

import win32com.client
import os

def save_target_attachments(shared_mailbox_name, save_dir):
    # 初始化Outlook连接
    outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
    
    # 定位共享邮箱收件箱
    recipient = outlook.CreateRecipient(shared_mailbox_name)
    recipient.Resolve()
    inbox = outlook.GetSharedDefaultFolder(recipient, 6)  # 6对应Outlook收件箱常量
    
    # 构造精准筛选条件
    filter_rule = """
        [UnRead] = True 
        AND [SenderEmailAddress] = 'foo@foo.com'
        AND [Subject] LIKE '%FM1%'
        AND [Subject] LIKE '%Football%'
        AND [Subject] LIKE '%results%'
    """
    # 清理格式避免语法错误
    filter_rule = ' '.join(filter_rule.split())
    
    # 应用筛选规则
    target_emails = inbox.Restrict(filter_rule)
    
    # 创建附件保存目录
    os.makedirs(save_dir, exist_ok=True)
    
    # 处理符合条件的邮件
    for mail in target_emails:
        print(f"处理邮件:{mail.Subject}")
        for att in mail.Attachments:
            # 仅保存实际文件附件(跳过签名图等嵌入内容)
            if att.Type == 1:
                save_path = os.path.join(save_dir, att.FileName)
                att.SaveAsFile(save_path)
                print(f"已保存附件:{save_path}")
        
        # 处理后标记为已读(按需注释)
        mail.UnRead = False
        mail.Save()

# 调用示例:替换为你的共享邮箱名称和保存路径
save_target_attachments("共享邮箱名称", r"C:\Outlook_Attachments")

关键细节说明:

  • 共享邮箱定位:通过CreateRecipient解析共享邮箱名称,再用GetSharedDefaultFolder获取收件箱,参数6是Outlook内置的收件箱标识。
  • 筛选规则逻辑:
    • [UnRead] = True:仅保留未读邮件
    • [SenderEmailAddress]精准匹配发件人邮箱,比显示名称更可靠
    • 多个LIKE语句用AND连接,确保主题同时包含所有指定关键词
  • 附件过滤:通过Attachment.Type == 1判断为实际文件附件,避免保存邮件中的嵌入图片等冗余内容
  • 效率优势:Restrict方法在Outlook端完成筛选,比遍历全收件箱效率提升明显,适合大邮件量场景

前置准备:

  1. 安装依赖库:pip install pywin32
  2. 运行时确保Outlook处于打开状态,或改用DispatchEx启动后台Outlook进程
  3. 确认发件人邮箱地址准确,可手动查看目标邮件的SenderEmailAddress属性验证

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 17:17:16