【问题标题】:Outlook Storage Example not finding body text in .MSGOutlook 存储示例未在 .MSG 中找到正文
【发布时间】:2012-11-13 20:00:59
【问题描述】:

我正在使用CodeProject 的优秀示例来阅读 .MSG 文件,但是很多都没有正文。我已经进入了代码,我认为这是因为 Outlook 邮件的属性键 __substg1.0_1000 在邮件属性中不存在(Outlook Storage 的 GetMapiPropertyFromStreamOrStorage() 方法)。

我是否需要寻找备用属性键才能从这些电子邮件中读取消息正文?如果需要,它是什么?有没有其他办法解决这个问题?

【问题讨论】:

    标签: c# file-format msg


    【解决方案1】:

    我不在电脑附近,好吧,我猜我的手机有点像电脑,但你确定它们是电子邮件吗?日历和联系人项目通常不具有该属性。

    PidTagBody、PidTagHtmlBody 和 PidTagRtfBody(?) 都是可以包含正文信息的属性。但是,如果有 HTML 或 rtf 正文,您几乎总是会填充 PidTagBody 属性。

    您可以检查 PidTagMessageClass 属性以确定它是否是电子邮件、便笺、联系人等。电子邮件将具有值“IPM.Note”。您必须自己查找这些名称的属性 ID,至少在我可以靠近计算机之前。

    【讨论】:

    • 这些都是我已导出并正在尝试处理的退回电子邮件,因此我相信它们是有效的。 BodyText 和 BodyRTF 都是空的,所以我想它们可能只是 html ......您可以就属性 ID 和映射提供任何建议将不胜感激 - 这不是我的专长,我只是在钻研尝试并理解为什么这些属性为空。
    • @Liath - 退回邮件由 Outlook 以特殊方式存储。它们也不是IPM.Note 类型。应该有一个嵌入式消息作为附件,即发送的原始电子邮件。那会有你的 BodyText。
    • 谢谢,其中很多确实有附件 - 这个特别的没有。我正在尝试提取通常在消息文本中给出的原始电子邮件的收件人(你能告诉它是什么吗?)并且正在对消息文本执行正则表达式 - 这适用于大约 1/4 的情况,但不是全部.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-07
    • 2015-12-25
    • 2016-04-09
    • 2017-07-06
    • 1970-01-01
    • 2010-09-13
    • 2014-12-25
    相关资源
    最近更新 更多