Сюжет:
Я создаю надстройку outlook 2007 с использованием VSTO и C # в Visual Studio 2010. Цель надстройки - отслеживать отслеживание сообщений, отправляемых клиентам. Надстройка должна вставлять код отслеживания в каждое исходящее письмо, которое впоследствии позволяет распознавать его и автоматически архивировать, когда клиент отвечает. Моя цель - вставить код отслеживания в качестве атрибута в открывающий тег 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. И это не бросает никаких исключений. Это просто ничего не делает. Я переписал эту логику непосредственно в VBA в Outlook и попытался изменить HTMLBody, но она все равно не изменилась. Насколько я знаю, это не изменило HTMLBody, пройдя и наведя курсор мыши на свойство, чтобы увидеть текущее значение.
Однако я могу вносить изменения в свойство MailItem.Body. Но так как мне нужно каким-то образом скрыть код отслеживания, свойство Body мне совсем не помогает. Я также добавил метод MailItem.Save () после изменения свойства HTMLBody, но без изменений.
Я подумал, что, возможно, событие ItemSend слишком поздно, и я больше не могу изменить HTMLBody в это время, но я не могу найти ни одно событие, как BeforeSend или подобное.
Любые идеи будут высоко оценены.