Introduction
Dans le cadre de l’extension d’une application de partage de fichiers pour l’un de nos clients, celui-ci voulait utiliser son service de partage au travers d’Outlook 2010.
Concrètement, lors de l’envoi d’un email avec une pièce jointe si celle-ci dépasse une certaine taille alors elle sera envoyée à travers de partage l’application (grâce à un Web Service précédemment créer) plutôt que par email.
Nous allons découvrir dans cet article comment surcharger l’envoi d’un email sur Outlook 2010 pour faire des actions personnalisées et comment créer un fichier d’installation.
Ce dont nous avons besoin
- Visual Studio 2010
- Office 2010
Implémentation
- 1. Création de la solution
Lancer Visual Studio 2010 et créer un projet de type « Complément Outlook 2010 » :
- 2. Composition de la solution
Une fois la solution créée, nous retrouvons les éléments suivants dans l’explorateur de solutions :
Le fichier qui va nous intéresser est « ThisAddIn.cs ».
Celui-ci va contenir le code dont nous avons pour intercepter et modifier l’envoi d’un email.
A la création, nous pouvons voir 2 méthodes :
- ThisAddIn_Startup
- ThisAddIn_Shutdown
La méthode ThisAddIn_Startup est appelée au lancement d’Outlook, elle correspond au chargement de notre AddIn.
La méthode ThisAddIn_Shutdown est appelée à la fermeture d’Outlook, elle correspond au déchargement de notre AddIn.
- 3. Préparation du code
Ajout des références :
1 | using Microsoft.Office.Interop.Outlook; |
Ajout des variables et constantes :
1 2 3 4 5 6 7 |
public Application OutlookApplication; public Inspectors OutlookInspectors; public Inspector OutlookInspector; public MailItem OutlookMailItem; |
Modifier la méthode ThisAddIn_Startup afin d’initialiser nos variables et s’abonner aux différents événements et ajouter le code suivant :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
private void ThisAddIn_Startup(object sender, System.EventArgs e) { // Instanciation de l’application OutlookApplication = Application as Application; // Récupération des « inspectors » OutlookInspectors = OutlookApplication.Inspectors; // Abonnement à l’événement d’inspection OutlookInspectors.NewInspector += new Microsoft.Office.Interop.Outlook.InspectorsEvents_NewInspectorEventHandler(OutlookInspectors_NewInspector); // Abonnement à l’événement d’envoi d’email OutlookApplication.ItemSend += new Microsoft.Office.Interop.Outlook.ApplicationEvents_11_ItemSendEventHandler(OutlookApplication_ItemSend); } |
Créer ensuite les 2 événements suivants :
1 2 3 4 5 6 7 8 9 10 11 |
void OutlookInspectors_NewInspector(Microsoft.Office.Interop.Outlook.Inspector Inspector) { } void OutlookApplication_ItemSend(object Item, ref bool Cancel) { } |
Le 1er événement se charge d’inspecter les différentes actions faites par l’utilisateur.
Le 2nd nous permet d’intercepter l’envoi d’un email (bouton « Envoyer ») et de faire des actions spécifiques.
- 4. Interception et modification de l’email
Pour intercepter notre email, nous allons utiliser l’événement « OutlookInspectors_NewInspector » vu dans le paragraphe précédent, vérifier que l’on manipule un objet de type « MailItem » et l’affecter dans notre variable « OutlookMailItem ». Cette variable nous permettra de manipuler l’email lors de l’envoi.
Pour cela, ajouter le code suivant dans l’événement :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
void OutlookInspectors_NewInspector(Microsoft.Office.Interop.Outlook.Inspector Inspector) { // Récupération de « l’inspector » OutlookInspector = (Inspector)Inspector; // Test sur le type, ici « MailItem » nous intéresse if (Inspector.CurrentItem is MailItem) { // Récupération de l’objet dans la variable « OutlookMailItem » OutlookMailItem = (MailItem)Inspector.CurrentItem; } } |
Nous allons maintenant modifier l’événement « OutlookApplication_ItemSend » et afficher le contenu de celui-ci dans une boite de dialogue.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
void OutlookApplication_ItemSend(object Item, ref bool Cancel) { try { System.Windows.Forms.MessageBox.Show(« Contenu de l’email : « + OutlookMailItem.Body); } catch (System.Exception ex) { System.Windows.Forms.MessageBox.Show(ex.Message); // On annule l’envoi Cancel = true; } } |
Voici le résultat obtenu :
Nous allons maintenant modifier le contenu de l’email envoyé :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
void OutlookApplication_ItemSend(object Item, ref bool Cancel) { try { // Modification du contenu de l’email string sBody = « —\r\n »; sBody += « Ce mail a été modifié automatiquement ! »; // Ajout de notre texte à la suite du mail. OutlookMailItem.Body += sBody; } catch (System.Exception ex) { System.Windows.Forms.MessageBox.Show(ex.Message); // On annule l’envoi Cancel = true; } } |
Le mail reçu a bien été modifié :
- 5. Création d’un fichier d’installation
Créer sous Visual Studio un nouveau projet de type « Projet d’installation ».
Dans l’explorateur de solutions, faire un clic droit sur le nouveau projet, puis ajouter « sortie de projet ».
Sélectionnez « Sortie principale ».
Après l’ajout, dans la liste des dépendances détectées, exclure les dépendances suivantes :
- Microsoft.Office.Tools.Common.dll
- Microsoft.Office.Tools.dll
- Microsoft.Office.Tools.Outlook.dll
- Microsoft.Office.Tools.v4.0.Framework.dll
- Microsoft.VisualStudio.Tools.Applications.Runtime.dll
- Stdole.dll
Vos dépendances devraient ressembler à ça :
Se rendre dans l’éditeur du système de fichier et ajouter les 2 fichiers suivants depuis le répertoire « bin\release » du projet :
- MonAddinOutlook.dll.manifest
- MonAddinOutlook.vsto
Se rendre dans l’éditeur de registre et ajouter les clés pour avoir la même arborescence et la configuration suivante :
Modifier ensuite les différentes options du Setup afin de renseigner les informations sur le nom de l’application, le créateur, les options de mise à jour, …
Compiler l’installateur et lancer l’installation.
Pour vérifier que votre AddIn est bien installé, lancer le gestionnaire de compléments COM et vérifier qu’il figure bien dans la liste.
- 6. Pour aller plus loin…
Il est bien sûr possible d’aller encore plus loin en imaginant toute sorte « d’application » ou contrôles par rapport à l’email (par exemple l’ajout ou la suppression de pièces jointes, ajout de destinataire, …).
Source de ce tuto : http://blog.webnet.fr