【问题标题】:How to display and store decrypted mailItem in Outlook如何在 Outlook 中显示和存储解密的 mailItem
【发布时间】:2015-07-10 03:40:22
【问题描述】:

我正在开发一个自动解密电子邮件的 Outlook-AddIn。所以基本上,当新邮件到达时,AddIn 会更改一些 MailItem 属性(主题、正文、附件)。问题是,当我保存项目时,解密的消息会与服务器同步,这对于端到端加密来说真的很糟糕......如果我不保存项目,那么资源管理器窗格仍然会显示加密的消息和搜索电子邮件(解密的主题或正文)不起作用。

我的问题是:如何显示和(本地)存储解密的 mailItem,以便电子邮件搜索等所有常用功能仍然有效? 有没有办法停止 .ost 中特定电子邮件的同步?

我想出的一个解决方案是将 MailItem 的副本存储在本地 .pst 存储中。但在这种情况下,用户必须在两个不同的存储(.ost 和 .pst)中处理消息,这对用户不是很友好。要求是用户在阅读电子邮件时必须尽可能少地改变他的惯常行为。

private void Outlook_NewMailEx(object Item)
    {
        Outlook.MailItem mailItem = Application.Session.GetItemFromID((string)Item);

        if (mailItem != null)
        {
            // decrypt the mailItem
            mailItem.Subject = "decrypted subject";
            mailItem.Body = "decrypted body";

            // save mailItem LOCALLY
            // (don't synchronize the decrypted message with the server)
            mailItem.Save();
        }                    
    }

如果有任何帮助,我将不胜感激!

【问题讨论】:

    标签: email encryption outlook outlook-addin


    【解决方案1】:

    我想出的一个解决方案是将 MailItem 的副本存储在本地 .pst 存储中。

    这是我对可能实现的第一个想法。

    您也可以考虑以下场景:

    1. 将项目的解密副本保存在隐藏文件夹中。 Folder 类的GetStorage 方法在父文件夹上返回一个StorageItem 对象,以存储Outlook 解决方案的数据。 StorageItem 对象存储在文件夹级别,允许它与帐户一起漫游并可以在线或离线使用。 Outlook 对象模型不为 StorageItem 对象提供任何集合对象。但是,当您将 TableContents 参数指定为 olHiddenItems 时,您可以使用 Folder.GetTable 获取一个包含文件夹中所有隐藏项的表。

    获得 StorageItem 对象后,您可以执行以下操作来存储解决方案数据:

    • 为项目添加附件以进行存储。
    • 使用项目的显式内置属性(例如 Body)来存储自定义数据。
    • 使用 UserProperties.Add 方法向项目添加自定义属性。请注意,在这种情况下,UserProperties.Add 方法的可选 AddToFolderFields 和 DisplayFormat 参数将被忽略。
    • 使用 PropertyAccessor 对象获取或设置自定义属性。

    更多信息请参见Storing Data for Solutions

    1. 将自定义属性添加到具有解密内容的 Outlook 项目。因此,当要显示该项目时,您可以即时替换内置属性的内容。
    2. 另一种解决方案是将解密的信息存储在数据库中。请注意,您开发了一个托管加载项,因此您可以使用 .net 框架的所有功能。

    【讨论】:

    • 问题不在于实际存储或解密数据(我可以为此使用数据库)。问题是为用户显示解密的邮件。在 MailItem.Open 事件上修改主题和正文时,资源管理器界面仍会显示加密的主题和正文。此外,总是会提示用户“mailItem 的属性已更改。您要保存更改吗?”并且搜索加密消息的内容也不起作用。这就是为什么我需要一种方法来实际保存 mailItem(但没有同步)。
    猜你喜欢
    • 2018-06-30
    • 1970-01-01
    • 2014-07-23
    • 1970-01-01
    • 2010-12-24
    • 2015-12-11
    • 2014-10-12
    • 2018-08-01
    • 2012-06-21
    相关资源
    最近更新 更多