【问题标题】:Outlook mail item is getting broken after reading property with PropertyAccessor使用 PropertyAccessor 读取属性后 Outlook 邮件项目损坏
【发布时间】:2014-06-07 23:45:31
【问题描述】:

我为 MS Outlook 创建了一个插件,它只显示一些电子邮件标题信息。显示标题信息的命令可从选定的电子邮件项目的上下文菜单中访问。在我设置发送电子邮件的传递规则之前,一切都很好。每封电子邮件都会在发件箱文件夹中停留 2 分钟,然后再发送。但是,当我选择一个电子邮件项目时,它会获得常规字体(未触及的是粗体和斜体)并丢失它会发送日期时间字段值并显示为“无”。之后,电子邮件将留在发件箱文件夹中而不发送。

我发现了一个导致这种行为的代码部分

string header = (string)mailItem
                 .PropertyAccessor
                 .GetProperty("http://schemas.microsoft.com/mapi/proptag/0x007D001E");

所以我看到一个简单的GetProperty 操作会破坏发件箱电子邮件项目的状态。我找不到与上述行为相关的任何信息,也不知道如何解决这个问题。所以我的问题是如何解决这个问题以及为什么会发生这种行为?

【问题讨论】:

    标签: outlook office-interop outlook-addin outlook-2010 outlook-2007


    【解决方案1】:

    使用 OOM 或 Outlook 对象模型触摸标记为提交的邮件会中止提交过程。

    您可以排除发件箱文件夹中的邮件吗?

    【讨论】:

    • 谢谢!因此,据我了解,即使 GetProperty() 操作也会触及 mailItem。我可以检查 mailItem 的属性“已发送”是否设置为 false,或者它是否位于“发件箱”文件夹中,从而排除触摸。如果可能的话,您能否提供一些链接,我可以从中获得有关上述行为的更多信息?这对我很有帮助。我没有设法通过搜索互联网找到一些信息
    • 如何检索邮件?你在使用 Application.ActiveExplorer.Selection 集合吗?
    • 是的,我正在使用您提到的代码:Application.ActiveExplorer.Selection
    • 使用 Application.ActiveExplorer.CurrentFolder.EntryId 并将其 (Namespace.CompareEntryIds) 与发件箱文件夹的条目进行比较(使用 Namespace.GetDefaultFolder(olFolderOutbox)))。
    猜你喜欢
    • 2021-09-22
    • 2013-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-03
    • 1970-01-01
    • 1970-01-01
    • 2012-10-07
    相关资源
    最近更新 更多