2016-02-29 3 views
0

Nous avons été bloqués en essayant d'éditer le corps html des email pour des replys et des fowards. Nous avons un formulaire personnalisé que nous voulons ajouter l'en-tête au corps de l'email html en fonction de si c'est une nouvelle réponse par e-mail ou foward. Comment obtenez-vous le nouveau corps pour remplacer la réponse et le corps de courrier électronique transmis. Le sujet fonctionne très bien.Modification de MailItem.Body pour le complément Outlook VSTO?

namespace OutlookAddIn 
{ 
    public partial class ThisAddIn 
    { 
     private Outlook.Inspectors inspectors; 

     private void ThisAddIn_Startup(object sender, System.EventArgs e) 
     { 
      inspectors = this.Application.Inspectors; 
      inspectors.NewInspector += new Microsoft.Office.Interop.Outlook.InspectorsEvents_NewInspectorEventHandler(Inspectors_NewInspector); 
     } 

     private void ThisAddIn_Shutdown(object sender, System.EventArgs e) 
     { 
      // Note: Outlook no longer raises this event. If you have code that 
      // must run when Outlook shuts down, see http://go.microsoft.com/fwlink/?LinkId=506785 
     } 

     void Inspectors_NewInspector(Microsoft.Office.Interop.Outlook.Inspector Inspector) 
     { 
      Outlook.MailItem mailItem = Inspector.CurrentItem as Outlook.MailItem; 
      if (mailItem != null) 
      { 
       if (mailItem.EntryID == null) 
       { 
        ClassificationForm formMain = new ClassificationForm(); 
        formMain.ShowDialog(); 
        mailItem.HTMLBody = formMain.GetHTMLBody(); 
        mailItem.Subject = formMain.GetSubject(); 
       } 
      } 
     } 

     #region VSTO generated code 

     /// <summary> 
     /// Required method for Designer support - do not modify 
     /// the contents of this method with the code editor. 
     /// </summary> 
     private void InternalStartup() 
     { 
      this.Startup += new System.EventHandler(ThisAddIn_Startup); 
      this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown); 
     } 

     #endregion 
    } 
} 

a également essayé cela, qui ne remplace l'e-mail html du corps, mais elle ouvre deux versions des e-mails et ForwardingMessage.Display (true); ne fonctionne pas complètement pour afficher uniquement la version modifiée de l'e-mail.

Outlook.MailItem ForwardingMessage = (Outlook.MailItem)this.Application.CreateItem(Outlook.OlItemType.olMailItem); 
Outlook.MailItem SelectedMessage = (Outlook.MailItem)this.Application.ActiveExplorer().Selection[1]; 
if (SelectedMessage != null) 
{ 
    if (ForwardingMessage != null) 
    { 
     ClassificationForm formMain = new ClassificationForm(); 
     formMain.ShowDialog(); 
     SelectedMessage.HTMLBody = formMain.GetHTMLBody(); 
     SelectedMessage.Subject = formMain.GetSubject(); 
    } 
} 
+0

Parfois, vous devez rouvrir l'élément Outlook si vous souhaitez que les modifications soient visibles. Aide-t-il? –

Répondre

0

Nous avons résolu par faire un travail autour de l'ajout d'une zone de formulaire à l'adresse électronique qui modifie les données et en utilisant un événement simplement pour ajouter les e consentement des données de la zone de formulaire à l'adresse électronique réelle.