如何获取邮件的“原始邮箱”?共享邮箱邮件复制后的编程溯源
邮件原始邮箱获取与溯源问题解答
一、如何获取邮件的“原始邮箱”?
获取邮件的原始邮箱需根据使用的API/工具类型,读取对应属性或邮件头信息:
- Exchange Web Services (EWS):读取邮件的
InternetMessageHeaders,查找Received或X-Originating-Email头域;或直接读取OriginalSender属性(适用于转发/回复场景)。对于Exchange内部邮件,可解析PR_MAILBOX_OWNER_ENTRYID属性获取原始邮箱标识,进而转换为SMTP地址。 - Graph API:查看邮件的
internetMessageHeaders溯源字段,或通过parentFolderId解析原始文件夹所属邮箱信息;核心判断依赖头域或存储属性。 - MAPI/Outlook VBA:直接读取
PR_ORIGINATOR_ADDRTYPE和PR_ORIGINATOR_EMAIL_ADDRESS属性,这两个字段直接存储原始发件人邮箱地址;若需获取邮件最初所在邮箱,解析PR_PARENT_STORE_ENTRYID属性即可关联到原始存储邮箱。
二、复制共享邮箱邮件到用户邮箱后,能否编程检测原始创建/接收邮箱?
可以实现,但效果依赖复制方式和属性保留情况:
- Exchange原生复制操作(如EWS
CopyItem、GraphCopy):复制后的邮件会保留PR_MAILBOX_OWNER_NAME、PR_MAILBOX_OWNER_ENTRYID等核心属性,解析这些属性可直接关联到原始的shared1@contoso.com邮箱。 - 手动客户端复制(如Outlook拖拽):部分属性可能丢失,但如果Exchange服务器配置了溯源信息保留,可在
InternetMessageHeaders中查找X-MS-Exchange-OriginalFrom等专属头域,以此判断原始邮箱归属。
三、PR_PREDECESSOR_CHANGE_LIST能否用于此场景?
该属性(ID:0x0019001F)主要记录邮件的变更历史轨迹,存储的是一系列变更操作的条目列表(含操作类型、对象ID等),无法直接检测原始邮箱:
- 它的核心作用是追踪邮件版本变更,而非邮箱归属信息。即便结合变更条目的存储ID间接溯源,解析难度极高,且跨邮箱复制场景下不一定会完整记录相关信息。
- 更可靠的方案还是优先使用
PR_MAILBOX_OWNER_ENTRYID、PR_ORIGINATOR_EMAIL_ADDRESS或邮件头中的溯源字段。
内容的提问来源于stack exchange,提问作者Victor Ivanidze
相关产品推荐
相关产品推荐

