Création d’un Add-in Outlook 2010 – VSTO – Visual Studio C#

Bonjour,

Après avoir vu en détail la programmation via l’API Exchange Web Service, je vais introduire la technologie Addin d’Office, particulièrement pour Outlook (autant continuer sur cette voie ;)) avec les VSTO (Visual studio Tools for Office)

Première étape: Création du projet

A la création du projet, vous devriez avoir les 2 méthodes suivantes de créées:

    public partial class ThisAddIn
    {
        private void ThisAddIn_Startup(object sender, System.EventArgs e)
        {
        }
 
        private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
        {
        }
}

qui vous permettront d’avoir un accès à votre code au chargement de l’addin et à sa fermeture.

Pour ajouter une fenêtre, ajouter un nouvel élément à votre projet et sélectionner zone de formulaire Outlook comme ci dessous: (il est possible de customiser le ruban aussi, assez simplement)

Sélectionnez le type de formulaire que vous souhaitez créer et sa position relative à l’existant:

Ici spécifiez pour quel sous élément votre composant s’affichera, ici il s’affichera dans la fenêtre de visualisation des emails:

Voila, vous pouvez désormais customiser (un peu) votre Outlook 2010!

Microsoft Exchange – EWS: Propriétés personnalisées – Création

Bonjour,

Aujourd’hui, cap sur les propriétés personnalisées avec Exchange Web Service API:

Au delà des propriétés « basiques » telles que Subject, Body, From (…) il est possible d’avoir des propriétés personnalisées sur chaque « ServiceObject ».
EmailMessage étant un ServiceObject, à l’instar de Folder ou encore de Contact, voyons comment jouer avec ces propriétés personnalisées (ou « étendues« ):

ExtendedPropertyDefinition extendedPropertyDefinition = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.PublicStrings, "Name Of my property", MapiPropertyType.String);
 
MyMessage.SetExtendedProperty(extendedPropertyDefinition, "ValueOf my property");

La propriété personnalisée peut avoir différents types : string, integer, booleen, date.. (énuméré dans MapiPropertyType)

Pour sauver les modifications apportées (si toutefois c’est un élément récupéré et non une création), utilisez la méthode suivante :

MyMessage.Update(ConflictResolutionMode.AlwaysOverwrite);

Dans le cas d’un Dossier, c’est la même méthode mais sans paramètre qui sera appelée.

Pour récupérer les valeurs des propriétés personnalisées, ou encore plus complexe: récupérer toutes les propriétés d’un email, je vous suggère l’article suivant

Exchange Web Service (EWS) : impersonation (administrateur)

Bonjour,

Aujourd’hui un court post mettant en avant la pratique de l’impersonation (le super utilisateur)

Avec cela, un super utilisateur, identifié avec la méthode classique de connexion, pourra parcourir et interagir avec toutes les boites emails sur serveur Exchange, sans se préoccuper des mots de passe.

Pour l’implémentation:

D’abord, sur la machine possédant le serveur Exchange ouvrir Exchange Management Shell et tapez ceci:

New-ManagementRoleAssignment –Name AgentImpersonationRole –Role ApplicationImpersonation –User "Votre_Nom_D_Utilisateur_Ici"

Voila, votre compte est désormais un super compte!

Au niveau de l’API, ça se passe comme cela:

//Connection avec l'API:
m_service = new ExchangeService(ExchangeVersion.Exchange2010_SP1);
//sUser est le super utilisateur précédement créé (Votre_Nom_D_Utilisateur_Ici)
m_service.Credentials = new WebCredentials(sUser, sPwd, sDomain);
m_service.Url = new Uri("http://XXXX/EWS/Exchange.asmx");
 
//Spécification de la boite email à gérer:
m_service.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, "BoiteEmailAmodifier");
//Action sur cette boite email:
Folder newFolder = new Folder(m_service);
newFolder.DisplayName = "ImpersonatedTestFolder";
newFolder.Save(WellKnownFolderName.Inbox);

Voila, vous avez créé un dossier sur une boite email différente de la votre en jouant des droits de super utilisateur. Vous pouvez ainsi faire des opérations de groupes sur des comptes emails sans vous préoccuper des passwords.

Utilisation de Microsoft.Office.Interop.OutlookViewCtl, visual studio/Outlook 2010, C#

Aujourd’hui je vous présente un composant Microsoft qui vous permet d’afficher des blocs d’Outlook dans votre propre application!

Je vais particulièrement m’intéresser aux emails (parce que je travaille là dessus), et laisser les calendriers pour d’autres tutoriaux 😉

Lors de l’installation d’Office (peu importe la version à priori, j’utilise 2010 personnellement), une DLL appelée « OUTLCTL.DLL » est placée dans votre répertoire Office (dans mon cas C:\Program Files (x86)\Microsoft Office\Office14)

Lancer visual studio, créer un nouveau projet du type Application Windows Forms.

Ajouter la référence à OutlookViewCtl:

Cherchez la référence suivante: (Microsoft Outlook View Control) dans la partie COM

Voilà, la référence à Microsoft.Office.Interop.OutlookViewCtl est ajoutée!

Maintenant, il convient d’ajouter l’élément dans la boite à outils:

Et voila, votre composant Outlook est prêt à être utilisé!

Pour changer le dossier courant, simplement modifier la propriété « Folder » du composant, ainsi le faire passer à « Inbox », « Sent Items » permet d’afficher les emails appropriés.

Pour afficher le calendrier, il suffit de mettre la propriété Folder à « Calendar »

A noter:

  • Vous vous rendrez compte que lors de l’ajout de votre composant dans votre application,  une référence est ajoutée: « AxMicrosoft.Office.Interop.OutlookViewCtl »
  • Il se peut que l’utilisation de ce composant sous Visual Studio entraîne des (gros) ralentissements, voir des freeze total de Visual Studio. C’est totalement lié à l’utilisation faite de Outlook (le vrai Outlook) en parallèle. Donc quitter ou relancer Outlook peut être une bonne solution pour sortir du freeze présent dans l’IDE.

Débugger un add-in Outlook: breakpoint not hit. Visual 2010 Outlook 2010

Bonjour,

Dans le cas où vous auriez besoin de debugger un Add-in Outlook, et que le débugger n’atteint pas les breakpoints, vous pouvez vous tourner vers la solution suivante:

Sous Visual studio,

Addin outlook step1

Ajouter un  projet existant

Addin outlook step2

Allez chercher le Outlook.exe

Addin outlook step3

Définissez le en temps que projet de démarrage

Addin outlook step4

Allez dans Propriétés:

Addin outlook step5

et mettez dans type de debogueur : Managé (v2.0, v1.1, v1.0)

Addin outlook step6

Tout devrait fonctionner desormais 🙂

Un lien vers l’auteur de la solution