【问题标题】:Office 2010 Outlook plugin not saving attachments onlyOffice 2010 Outlook 插件不只保存附件
【发布时间】:2011-10-06 08:25:20
【问题描述】:

我继承了适用于 Outlook 的 Office 2010 插件。它应该能够将邮件、附件或两者都保存在单独的数据库/文件中。它很好地保存了包含附件的邮件(又名两者)。如果我只选择保存附件,它仍然会同时保存(邮件+附件),那就是 - 一个不错的带有附件的 msg 文件(msg 是 Outlook 邮件文件格式)。 还有一个 Office 2003/2007 版本可以正确执行此操作,可以保存邮件、附件或两者都等待选择。几天来我一直在查看代码,但我无法找到 2003/7 能够做什么和 2010 不能做什么之间的区别。

难道是 Outlook 2010 无法从代码角度单独保存邮件和附件?

详情:
Office 2003 插件:用 C#、.NET3.5、VS8 编写
Office 2007 插件:C#、.NET3.5、VS8
Office 2010 插件:C#、.NET4、VS10

我们已正式停用 2003 版,并且不再对其进行维护。当有人报告任何事情时,2007 正在被修复。 2010 年是“新”黑色;)

我可能找到了一个关键点

protected override void EnableAddAttachmentsToLegis()
{  
    // Adds a button on the right click context menu, 
    // when user clicks on an attachment:
    _application.AttachmentContextMenuDisplay
        += new Outlook.ApplicationEvents_11_AttachmentContextMenuDisplayEventHandler
        (Application_AttachmentContextMenuDisplay);  
}

http://technet.microsoft.com/en-us/query/bb623145 - 太糟糕了,好问题现在是 - 是什么取代了它,或者它被完全废除了。

已被 2007 年取代 - http://msdn.microsoft.com/en-us/library/microsoft.office.interop.outlook.applicationevents_11_event_members.aspx - 2010 年已弃用。

【问题讨论】:

    标签: c# plugins ms-office


    【解决方案1】:

    我以前在使用 Outlook 时做过类似的事情。我将概述我的步骤:

    订阅新邮件活动:

    Application.NewMailEx += Application_NewMailEx;
    

    处理程序使用逗号分隔的字符串为您提供所有新邮件的列表。我拆分并处理了每个 id:

    string[] entryIds = EntryIDCollection.Split ( new char[] { ',' } );
    foreach (string entryId in entryIds) {
        processMail ( entryId, maskExpanded );
    }
    

    processMail 函数检索邮件项并迭代提供所有附件(如果有附件):

    private void processMail( string entryId ) {
        Outlook.MailItem mail = Application.Session.GetItemFromID ( entryId ) as Outlook.MailItem;
        if (mail.Attachments.Count > 0) {
            foreach (Outlook.Attachment att in mail.Attachments)
                processAttachment ( att );
        }
    }
    

    processAttachment 函数的核心刚刚保存了附件使用

    attachment.SaveAsFile ( <filename> );
    

    我的插件中的功能做了更多(例如创建目录结构),但基本思想应该已经很明显了。对邮件新事件之外的邮件执行此操作可能遵循相同的步骤。

    【讨论】:

    • 有趣的是,当我更新这个页面时,我实际上正在写一些相同的东西。我的区别是我不会在所有新邮件上都这样做,只是用户单击(右键单击)的邮件。您确认 2010 可以从编程的角度将附件与邮件分开保存。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-02
    • 1970-01-01
    • 2019-05-05
    • 1970-01-01
    相关资源
    最近更新 更多