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

本文关键字:排除 原始 插件 Outlook | 更新日期: 2023-09-27 18:23:53

我正在用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不仅包含用户正在发送的消息,而且还包括整个线程/会话中以前的所有消息。我该如何过滤掉这些?

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

我自己还没有测试过,但这也在我们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;