PST 文件是 OUTLOOK 个人文件夹文件,它是独立的、结构化的二进制文件,不需要任何的外部依赖。每一个PST文件代表一个消息存储器
message store
,包含有任意层次结构的文件对象
Folder objects
,下面又包含消息对象
Message objects
,消息对象下面又包含附件对象
Attachment objects
。文件对象、消息对象、附件对象都存储在属性中,包含有特定邮件项目的所有信息。
PST文件在逻辑上分为三层:the NDB (Node Database) layer, the LTP(Lists, Tables, and Properties) layer, and the Messaging layer.
1. Node Database (NDB) Layer
NDB层代表数据库结点,是PST文件最低层的存储结构。NDB层包括
头部
(header)
、文件分配信息
(fileallocation information)
、块
(blocks)
、结点
(nodes)
、两颗
B
树
:
结点
B
树和块
B
树
(the Node BTree (
NBT
)and the Block BTree (
BBT
).)
NBT包含了
指向
PST文件中所有可访问
结点
的指针,B树的高效搜索方式能够快速的定位任意结点。每一个结点由四个属性集组成:
NID,parent NID, data BID
(指向与该结点关联的数据块), and
subnodeBID.
注:NID编号在整个PST文件里面是唯一的,可以查找NBT得到该结点。而
Subnode NID
?
只是在一个结点里面是唯一的,该节点不能从NBT查找得到。
BBT包含了指向PST文件中所有数据块的指针,每一个块也是由四个属性集组成:
BID,IB, CB, and CREF
。
其中IB是该块在文件内的偏移量,CB是存储在该数据块内的字节数,CREF是该数据块的引用次数。
NBT and BBT树根的位置的都能从PST文件头部相关字段获得。如下图所示:
下图描述的结点(node)和块(block)之间的关系:
2. Lists, Tables, and Properties (LTP) Layer
LTP层是构建NDB结构顶部的一个高级概念,LTP层的核心元素是
属性上下文theProperty Context (PC) and 表上下文TableContext (TC)
.每一个PC或TC也存放在一个单一的结点中,LTP层使用NIDS去标识PC和TC。
为了有效地实现PCs和TCs,
LTP层在每个NDB节点顶层采用以下两种类型的数据结构。
Heap-on-Node(HN
)
HN是在结点之上实现的一个堆数据结构,HN能够将一个结点的数据流细分为小的、大小可变的片段,它的主要用途是将各种字符串存储到数据块中。
BTree-on-Heap(BTH)
BTH是HN内部的一个数据结构。
HN
提供
快速访问
B-
树
的方法,而
BTH
提供一种
快速搜索数据
的方法。
PCs
就被实现为
BTHs
。
3. Messaging Layer
The Messaginglayer包含有让LTB结构和NDB结构组合起来被解释为文件对象、消息对象、附件对象和属性的高级规则和业务逻辑。该层的规则使得修改后的PST文件能够被成功的读取。
PST 文件是 OUTLOOK 个人文件夹文件,它是独立的、结构化的二进制文件,不需要任何的外部依赖。每一个PST文件代表一个消息存储器message store,包含有任意层次结构的文件对象Folder objects,下面又包含消息对象Message objects,消息对象下面又包含附件对象Attachment objects。文件对象、消息对象、附件对象都存储在属性中,包含有特定邮件项
1、使用MAPI读取
PST
文件
,需要mapi32.dll或msmapi32.dll或msoe.dll,这里以map32.dll为例。
2、(mpai_EnsureLibraries)载入map32.dll:
LoadLibrary(path);
3、(mapi_EnsureStores(libpath)) 初始化
a)GetProcAddress(pHandle, "Fun...
pst
sdk下载地址:https://archive.codeplex.com/?p=
pst
sdk
下载后,我们只需要取出
pst
sdk目录,并自己进行dll封装,实现提取邮件内容、主题、收件人信息,把附件保存在一个目录下。利用VS2015进行调用该dll。
下载后,把新建一个
pst
目录,把头
文件
剪贴到原本的
pst
sdk目录外边,新建
pst
目录
结构
如下:
要编译
pst
sdk库,需要boos...
Net
Pst
Extractor 2.0:
Outlook
PST
文件
直接读取解析组件 for .Net
==============================================================
### 功能
- 直接读取解析
PST
, OST
文件
.
- 抽取邮件正文, 附件, 联系人, Lync聊天存档等信息.
- 支持
Outlook
2003-2
PST
A分析器
SIS2014/2015@FOI
任务:创建一个从
PST
文件
读取
电子邮件
的软件,分析它的数据(从、到、抄送、密件抄送、主题和内容)。
电子邮件
中需要全文搜索。 UI 允许按内容、发件人、收件人、主题搜索每封
电子邮件
......显示给定时间段内的
电子邮件
并为每个人计算它们。 主要目标是在
PST
文件
中以图形方式显示发送方和接收方之间的连接。 项目仍处于开发阶段。
要运行应用程序,请在
Int
ellij IDEA 中打开源代码(
PST
analyzerr
文件夹
)。 将项目 SDK 设置为 Java 1.8,将项目语言级别设置为 8 - Lambdas、类型注释等。将尽快提供自可执行的 jar
文件
。
如何使用应用程序:
应用程序启动后,选择
PST
文件
。
按“启动”按钮
分析
PST
文件
后(可能需要几分钟,具体取决于
文件
大小),打开 Web 浏览器,
摘录部分官网的说明
《Java开发手册》始于阿里内部规约,在全球Java开发者共同努力下,已成为业界普遍遵循的开发规范。
手册涵盖编程规约、异常日志、单元测试、安全规约、MySQL数据库、工程规约、设计规约七大维度。
此次泰山版发布,将带来三大亮点:新增5条日期时间规约;新增2条表别名sql规约;新增统一错误码规约。
阿里在2016年12月7日首次向业界开放《Java开发手册》以来,获得了绝大部分开发者的认可,目前已经成为行业的事实标准。很多公司直接引
with open("eml
文件
的路径",'rb') as f:
a=f.read()
eml = eml_parser.eml_parser.decode_email_b(a,True,True)
#decode...
使用 Microsoft
Outlook
时,
电子邮件
、日历、任务和其他项目保存在邮件服务器或计算机上,或者同时保存在这两个位置。如果
Outlook
项目保存在计算机上,则它们保存在
Outlook
数据
文件
(.
pst
和 .ost)中。
关于
Outlook
数据
文件
(.
pst
和 .ost)
Outlook
使用两种类型的
Outlook
数据
文件
。
Outlook
数据
文件
(...
今天开机收邮件,发现
outlook
出问题了,提示:
outlook
.
pst
不是个人
文件夹
,网上找了下,使用如下方法修复成功
可能
PST
文件
已经损坏,请使用专用工具修复,如scan
pst
.exe.
office2007 scan
pst
.exe
文件
的位置:C:\Program Files\Microsoft Office\Office12\scan
pst
.exe
Offic2003