L'intrigue:Impossible de changer du corps du message HTML à partir VSTO Outook 2007 add-in
Je crée une perspective 2007 add-in en utilisant VSTO et C# dans Visual Studio 2010. L'objectif du complément est de provoquer le suivi des mails envoyés aux clients. Le complément doit insérer un code de suivi dans chaque courrier sortant, ce qui permet ultérieurement de le reconnaître et de l'archiver automatiquement une fois que le client a répondu. Mon but est d'insérer un code de suivi comme un attribut dans la balise d'ouverture du code HTML de la poste:
<html tracking="ddfwer4w5c45cgx345gtg4g" ...>
Cela se fera dans le gestionnaire d'événements de l'événement 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\" ...";
}
}
Le problème:
Il semble ne jamais modifier la propriété HTMLBody. Et il ne jette aucune exception. Cela ne fait rien. J'ai réécrit cette logique directement dans VBA dans Outlook, et j'ai essayé de changer le HTMLBody, mais il n'a toujours pas changé. Comment je sais qu'il n'a pas changé le HTMLBody est en passant par et survoler la propriété pour voir la valeur actuelle.
Je suis cependant en mesure d'apporter des modifications à la propriété MailItem.Body. Mais comme j'ai besoin de cacher le code de suivi, la propriété Body ne m'aide pas du tout. J'ai également ajouté la méthode MailItem.Save() après avoir modifié la propriété HTMLBody, mais pas de modification.
Je pensais que peut-être l'événement ItemSend est trop tard et je ne peux plus changer le HTMLBody à ce moment-là, mais je ne trouve aucun événement comme BeforeSend ou similaire.
Toutes les idées seraient grandement appréciées.