FAQ C#Consultez toutes les FAQ
Nombre d'auteurs : 41, nombre de questions : 274, dernière mise à jour : 27 mai 2018 Ajouter une question
Cette FAQ a été réalisée pour répondre aux questions les plus fréquemment posées concernant C# sur le forum Développement DotNET
Je tiens à souligner qu'elle ne garantit en aucun cas que les informations qu'elle contient sont correctes ; les auteurs font le maximum, mais l'erreur est humaine. Si vous trouvez une erreur, ou que vous souhaitez devenir rédacteur, lisez ceci .
Sur ce, je vous souhaite une bonne lecture.
Commentez cette FAQ : Commentez
Gestion de l'évènement d'arrivée d'un mail dans le répertoire Inbox de Outlook.
Pour être notifié de l'arrivé d'un nouvel e-mail, il faut s'abonner à l'un des évènements suivants :
- NewMail ;
- NewMailEx.
NewMail informe de l'arrivé d'un nouvel e-mail, sans donner d'information sur cet e-mail (charge à l'application d'aller interroger la boite de réception). NewMailEx informe de l'arrivé d'un nouvel e-mail, et fourni l'ID de cet e-mail. Il est alors simple de récupérer des informations, comme l'auteur, le sujet, etc...
Ci-dessous un exemple utilisant NewMailEx pour récupérer des informations sur les e-mails entrants
Code c# : | Sélectionner tout |
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 34 | /using Microsoft.Office.Interop.Outlook; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace FAQ_ArriveMailOutlook { class Program { private static Microsoft.Office.Interop.Outlook.Application _outlook; static void Main(string[] args) { _outlook = new Microsoft.Office.Interop.Outlook.Application(); _outlook.NewMailEx += M_ObjOutlookApp_NewMailEx; Console.WriteLine("Appuyez sur entrée pour mettre fin au programme"); Console.ReadLine(); } private static void M_ObjOutlookApp_NewMailEx(string EntryIDCollection) { Microsoft.Office.Interop.Outlook.NameSpace n = _outlook.GetNamespace("MAPI"); var item = n.GetItemFromID(EntryIDCollection); MailItem email = item as MailItem; Console.WriteLine(); Console.WriteLine("Nouveau message : "); Console.WriteLine(String.Format("- Expéditeur : {0}", email.SenderEmailAddress)); Console.WriteLine(String.Format("- Sujet : {0}", email.Subject)); } } } |
Pour ce faire, nous utiliserons Outlook et la Dll de Outlook Redemption. Cette dernière permet d'enlever la confirmation d'autorisation par un code externe à Outlook. Ce code permet de récupérer uniquement les mails présents dans le répertoire Inbox. L'ajout des références « Microsoft Excel 11.0 Object Library » ainsi que celle de « Outlook Redemption » sont nécessaire.
Code c# : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | // Import des bibliothèques using Outlook = Microsoft.Office.Interop.Outlook; using Redemption; // Créer une instance d'Application Outlook Outlook.Application m_ObjOutlookApp = new Outlook.ApplicationClass(); // Récupérer le NameSpace Outlook.NameSpace n = m_ObjOutlookApp.GetNamespace("mapi"); // Récupérer le Repertoire Rdo (Redemption) Redemption.RDOFolder f; Redemption.RDOSessionClass rdoSession = new Redemption.RDOSessionClass(); rdoSession.MAPIOBJECT = n.MAPIOBJECT; // Récupération du répertoire Inbox (rdoDefaultFolders est un enum, d'autres répertoires sont disponibles) f = rdoSession.GetDefaultFolder(rdoDefaultFolders.olFolderInbox); foreach (Object Item in f.Items) { // Création d'un item RDOMailClass RDOMailClass rdom = ((RDOMailClass)Item); // rdom est un mail a proprement parler. Les propriétés accessibles sont par exemple : SenderEmailAddress,Body,Subject ... } |
Pour ce faire, nous utiliserons Outlook. Ce code permet de récupérer uniquement les contacts présents dans le répertoire Contacts. L'ajout de la référence « Microsoft Excel 11.0 Object Library » est nécessaire.
Code c# : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | // Import des bibliothèques using Outlook = Microsoft.Office.Interop.Outlook; // Créer une instance d'Application Outlook Outlook.Application m_ObjOutlookApp = new Outlook.ApplicationClass(); // Récuperér le NameSpace Outlook.NameSpace n = m_ObjOutlookApp.GetNamespace("mapi"); // Récupérer le Repertoire Contact Outlook.MAPIFolder f = n.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderContacts); foreach (Object Item in f.Items) { if(Item is Outlook.ContactItem) { Outlook.ContactItem ct = ((Outlook.ContactItem)Item); /* On récupère ct objet de type ContactItem... voir la liste des propriétés */ } } |
Proposer une nouvelle réponse sur la FAQ
Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour çaLes sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.