如何在Outlook插件中排除原始邮件

时间:2014-09-22 17:56:23

标签: c# outlook vsto office-interop

我正在使用C#编写Outlook 2010/2013插件。我的删节代码如下所示:

using Outlook = Microsoft.Office.Interop.Outlook;
using Office = Microsoft.Office.Core;
public partial class ThisAddIn
{
    private void ThisAddIn_Startup(object sender, System.EventArgs e)
    {            
        Application.ItemSend += Application_ItemSend;
    }

    void Application_ItemSend(object Item, ref bool Cancel)
    {
        Outlook.MailItem mailItem = Item as Outlook.MailItem;
        // Scan for keywords before the user sends the email.
    }
}

当用户点击电子邮件上的“发送”按钮时,将执行Application_ItemSend事件处理程序。此时,我想扫描邮件正文以查找某些关键字。但是,我想在该扫描中排除旧/原始邮件。我只想扫描用户刚输入的消息... mailItem.BodymailItem.HTMLBody不仅包含用户正在发送的消息,还包含整个线程中的所有先前消息/会话。我怎样才能过滤掉那些?

1 个答案:

答案 0 :(得分:1)

我自己还没有测试过,但这也是我的Addin的待办事项清单。我没有找到很多关于此的文档,但邮件的OOXML(以及HTML) - 至少在2013年 - 包含如下内容:

OOXML:

<w:bookmarkStart w:id="0" w:name="_MailOriginal"/>

HTML:

<span style='mso-bookmark:_MailOriginal'>

这个书签可以让你找到可以切断信息的地方 - 据我所知,API中没有其他选项。

请参阅此处了解如何获取邮件的OOXML:

Word.Document document = mailItem.GetInspector.WordEditor;
string xml = document.WordOpenXML;