剧情:
我正在 Visual Studio 2010 中使用 VSTO 和 C# 创建 Outlook 2007 加载项。加载项的目的是跟踪发送给客户的邮件。插件应在每封出站邮件中插入跟踪代码,以便在客户回复后识别并自动存档。我的目标是在邮件 HTML 的开始标记中插入跟踪代码作为属性:
<html tracking="ddfwer4w5c45cgx345gtg4g" ...>
这将在 Application.ItemSend 事件的事件处理程序中完成:
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
this.Application.ItemSend += new Microsoft.Office.Interop.Outlook.ApplicationEvents_11_ItemSendEventHandler(Application_ItemSend);
}
void Application_ItemSend(object Item, ref bool Cancel)
{
if (Item is Outlook.MailItem)
{
Outlook.MailItem mail = (Outlook.MailItem)Item;
mail.HTMLBody = "<html tracking=\"4w5te45yv5e6ye57j57jr6\" ...";
}
}
问题:
它似乎永远不会改变 HTMLBody 属性。而且它不会抛出任何异常。它什么也不做。我在 Outlook 中直接用 VBA 重写了这个逻辑,并尝试更改 HTMLBody,但仍然没有更改。我如何知道它没有改变 HTMLBody 是通过单步执行并将鼠标悬停在属性上以查看当前值。
但是,我可以更改 MailItem.Body 属性。但是由于我需要以某种方式隐藏跟踪代码,所以 Body 属性对我没有任何帮助。更改 HTMLBody 属性后,我还添加了 MailItem.Save() 方法,但没有更改。
我想也许 ItemSend 事件太晚了,那时我无法再更改 HTMLBody,但我找不到像 BeforeSend 之类的任何事件。
任何想法将不胜感激。