【问题标题】:Saved Outlook MailItem does not yet have EntryId保存的 Outlook MailItem 还没有 EntryId
【发布时间】:2017-02-02 21:57:31
【问题描述】:

这很奇怪。

我从 Outlook 外部打开了一个保存的 Outlook MailItem(.msg 文件),由于某种原因尚未设置其 EntryID:

一些上下文:

  • 此 MailItem 是一个保存的 .msg 文件,它是从 Windows 资源管理器而不是 Outlook 打开的。
  • 在我的代码中,我最初从附件开始,然后将 MailItem 作为其父项。

如果我在调试时检查 MailItem,EntryID 为 null 或空字符串...

...但是如果(例如)我展开 m_ObjectToDataMap 直到我到达 _rcw 并展开 那个 对象的 Dynamic View - 那就是设置 EntryID 的时候。

好像 MailItem 还没有完全加载,在调试器中对值的一些检查以某种方式完成了 MailItem 的初始化。

我试过了:

  • System.Threading.Thread.Sleep() 等待几秒钟。
  • parent.Save() 尽管我知道这不是正在编写的新 MailItem。
  • 刷新活动检查器。
  • 尝试通过其他方法获取 MailItem,而不是从附件中获取。

这些都不能解决问题。为什么会这样?我将如何解决或解决此问题?任何帮助将不胜感激。

【问题讨论】:

    标签: c# outlook vsto outlook-addin


    【解决方案1】:

    独立的 MSG 文件没有条目 ID。这是可以预料的。

    【讨论】:

    • MailItem 上没有 EntryId 是否可以准确测试它是否独立?我需要在我的代码中考虑到这一点,因此能够确定 MailItem 是否是从 Outlook 外部打开的将非常有价值。
    • 不是,也有可能是因为邮件还没有保存。
    • 感谢您的回答,我是来学习的。确定 MailItem 是否从 Outlook 外部打开的推荐方法是什么?
    • 无。打开 MSG 文件时,Outlook 会在其中一个文件夹中创建一个临时副本。不直接显示味精文件。
    • 感谢 Dmitry,我最终没有依赖 MailItem 来实现我的目标。
    猜你喜欢
    • 2010-12-24
    • 1970-01-01
    • 2013-12-23
    • 2015-04-01
    • 2016-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多