IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo

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

SommaireOfficeOutlook (3)
précédent sommaire
 

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)); 
        }         
    } 
}

Mis à jour le 27 mai 2018 ensemblevide François DORIN

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 ... 
}

Mis à jour le 15 janvier 2007 ensemblevide

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 */ 
    } 
}

Mis à jour le 19 janvier 2007 ensemblevide

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 ça


Réponse à la question

Liens sous la question
précédent sommaire
 

Les 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.