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

使用PST-Parser解析PST文件仅返回Exchange EX编码无法获取SMTP地址如何解决

解决方案

方案1:通过Recipient属性直接读取(优先使用)

你拿到的EX格式地址是Exchange内部的X.500地址,PST文件的收件人元数据中默认会同时存储地址类型和对应的SMTP地址,不需要依赖Outlook自动化能力就能直接读取:

Recipient recip = message.Recipients.To.First();
string email;
if (recip.AddressType == "SMTP")
{
    // 外部收件人直接取默认属性即可
    email = recip.EmailAddress;
}
else if (recip.AddressType == "EX")
{
    // Exchange内部收件人读取PR_SMTP_ADDRESS对应的MAPI属性,属性标识为0x39FE001F
    var smtpProp = recip.Properties.FirstOrDefault(p => p.Id == 0x39FE001F);
    email = smtpProp?.Value?.ToString() ?? recip.EmailAddress;
}

该方法不需要额外解析字符串,运行效率最高。

方案2:解析原始邮件头提取

如果方案1无法取到有效值,可以直接读取邮件的原始传输头提取SMTP地址,你看到的To/Cc头内容可以直接从Message对象中获取:

// 读取完整原始邮件头
string rawHeaders = message.TransportMessageHeaders;
// 自行实现To、Cc字段的解析逻辑,提取尖括号内的地址即可

EX地址来源说明

你在公开邮件头里看不到EX地址是正常的,它是Outlook/Exchange在本地存储PST文件时额外写入的内部元数据,不属于邮件传输阶段的公开内容。PST-Parser默认优先读取了这个内部地址作为EmailAddress属性的返回值,才会出现你遇到的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 08:15:03