我正在使用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.Body
和mailItem.HTMLBody
不仅包含用户正在发送的消息,还包含整个线程中的所有先前消息/会话。我怎样才能过滤掉那些?
答案 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;