【问题标题】:How to parse / read Outlook PST-Files with Python?如何使用 Python 解析/读取 Outlook PST 文件?
【发布时间】:2021-11-09 21:25:01
【问题描述】:

在 Internet 上搜索使用 Python 访问 Outlook PST 文件的结果很少(而且显示的大部分内容都已过时)。有谁知道如何在有或没有图书馆的情况下阅读 PST?不幸的是,如果没有库的帮助,我的编程能力不足以构建 PST 阅读器。

我的目标是获取有关内容的以下信息:

  • 每个文件夹的项目数
  • 项目类型(邮件、会议、联系人...)
  • 项目大小
  • 附件包括尺寸
  • 可能是其他元数据,如日期、收件人等(可选)

我已经尝试了以下方法:

  1. libpff / pypff :崩溃并且似乎在做某事之前读取了内存中的整个文件(没有好的解决方案,因为 PST 文件保存在缓慢的网络存储中)。

  2. Libratom:与基于 libpff 的问题相同。

  3. Libpst:不清楚这是如何使用的/作为二进制文件提供(没有说明如何安装)/请参阅this post 上的答案/似乎没有维护或更新。

  4. win32(在 Outlook 中挂载 PST):一个教程展示了如何将 PST 挂载到本地安装的 Outlook 中并通过 MAPI 访问获取内容,但这也非常非常慢而且不会一个很好的解决方案,因为需要 Outlook。

  5. Asponse Email Python:虽然文档不是很好,但一开始很有希望(没有 Python 示例/不同的命名,例如 PersonalStorage 对象和许多其他对象/每个文件夹 50 个项目后停止(可能是一个限制)非免费版本,但由于出版商网站上没有解释而不清楚)。

这是来自Asponse-website的示例:

personalStorage = PersonalStorage.from_file(dataDir + "Outlook.pst")

folderInfoCollection = personalStorage.root_folder.get_sub_folders()

for folderInfo in folderInfoCollection:

    print("Folder: " + folderInfo.display_name)
    print("Total Items: " + str(folderInfo.content_count))
    print("Total Unread Items: " + str(folderInfo.content_unread_count))
    print("----------------------")

我进行了大量的谷歌搜索以找到合适的导入语句来运行此操作。

有没有人有一个稳定清晰的方法来阅读 Outlook PST 文件?即使是使用 Asponse 的解决方案也能超过 50 项限制。

【问题讨论】:

  • 这个问题之前已经被问过,并且由于我投票结束的相同原因而被关闭。 stackoverflow.com/questions/3197388/…
  • 那是11年前的事了!由于那个时间,这个话题没有进展吗?
  • @Grismar 最能说明问题的是对链接问题的评论(从 2017 年初,OP 7 年后):“请取消关闭此问题,以便我可以分享我的新解决方案”
  • 我相信人们有很好的建议和精彩的意见,但这不是重点。如果 OP(此处或此处)尝试了解决方案并遇到问题,那将是一个有效的 SO 问题。对于意见,Quora 还不错。我很欣赏这个问题上的 OP 提供了一些关于他们尝试过的选项的信息,而且手头似乎没有很好的解决方案,但它对可能遵循的讨论类型几乎没有变化。
  • 请注意,MS 不推荐或不支持尝试直接访问 .pst - 您可以直接访问邮件服务器,也可以使用 Outlook 上实现的 API 来访问邮件,例如 Outlook Mail REST API .

标签: python outlook pst


【解决方案1】:

Redemption(我是它的作者)可以是另一种选择 - 它是扩展 MAPI 的包装器,因此您仍然需要安装 Outlook(为其 MAPI 系统),但与 Outlook 对象模型不同,它可以是从服务中使用,不需要启动 Outlook.exe 和/或将 PST 文件添加到用户的默认配置文件。您可以使用RDOSession.LogonPstStore(它创建和删除配置为使用指定 PST 文件的临时配置文件)和/或 RDOSession.Stores.AddPstStore 将 PST 文件添加到现有会话(例如,由Outlook 或由LogonPstStore 创建)。

【讨论】:

  • 谢谢!我会试一试...
猜你喜欢
  • 1970-01-01
  • 2011-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-17
  • 1970-01-01
  • 2012-05-17
相关资源
最近更新 更多