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

如何使用Python的MAPI从非默认PST文件的指定文件夹获取邮件

如何切换目标PST文件访问指定文件夹

你的问题出在GetDefaultFolder方法默认只会访问默认数据文件(通常是Outlook的主PST)的对应文件夹。要访问其他PST,需要先定位到该PST对应的Store对象,再通过它获取目标文件夹。

步骤1:确认所有已加载的PST名称

先运行这段代码,列出Outlook中所有已加载的数据文件(包括PST),找到你要访问的目标PST的显示名称:

import win32com.client

outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")

# 遍历所有已加载的数据文件
for store in outlook.Stores:
    print(f"数据文件名称: {store.DisplayName}")

步骤2:定位目标PST并访问指定文件夹

根据上一步得到的目标PST名称,替换下面代码中的target_pst_name,即可访问该PST下的指定文件夹:

import win32com.client

outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")

# 替换为你的目标PST显示名称
target_pst_name = "你的目标PST名称"
target_store = None

# 遍历Stores找到目标PST
for store in outlook.Stores:
    if store.DisplayName == target_pst_name:
        target_store = store
        break

if target_store:
    # 方式1:从PST根目录开始访问子文件夹
    root_folder = target_store.GetRootFolder()
    # 替换为你要访问的文件夹名称
    target_folder = root_folder.Folders["Test Folder"]
    print(f"成功获取文件夹: {target_folder.Name}")

    # 方式2:直接获取该PST的默认收件箱,再访问其子文件夹
    # pst_inbox = target_store.GetDefaultFolder(6)  # 6对应收件箱的枚举值
    # target_folder = pst_inbox.Folders["Test Folder"]
else:
    print(f"未找到名称为'{target_pst_name}'的PST文件")

关键说明

  • 每个PST文件在Outlook中对应一个Store对象,outlook.Stores包含所有已加载的数据文件
  • Store.DisplayName是PST在Outlook左侧导航栏显示的名称,必须完全匹配才能找到目标PST
  • 如果要访问PST的默认文件夹(如收件箱、已发送邮件),可以用Store.GetDefaultFolder(文件夹枚举值),枚举值和GetDefaultFolder一致(比如6=收件箱,5=已发送)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 08:26:07