2013-05-29 1 views
1

Je suis curieux de savoir si c'est possible avec .NET. J'ai écrit une petite application GUI Windows C# et je me demandais s'il y avait un moyen de "puiser" dans Microsoft Outlook 2010 et vérifier si elle a de nouveaux emails (non ouverts) présents? Normalement, cette condition sera indiquée par la présence d'une icône d'enveloppe sur le plateau du système:Y at-il un moyen de savoir si Outlook 2010 a un nouvel email avec C#

enter image description here

+0

Voulez-vous interroger Outlook, ou souhaitez-vous recevoir une notification d'événement? –

+0

Sondage ou "interrogatoire" serait mieux. Mais, encore, quelles options ai-je? – ahmd0

+0

Ceci est probablement très proche de ce que vous voulez: http://stackoverflow.com/questions/2055811/get-unread-mails-from-outlook –

Répondre

1

Hope this helps ...

Voici demostrates comment retreive données à partir des éléments dans un dossier Outlook (appelé « MySubFolderName » dans le dossier Boîte de réception) en utilisant .NET:

d'abord ajouter une référence à l'objet COM Perspectives de votre projet:

en VS.NET clic droit sur une référence d choisissez Ajouter une référence. Sélectionnez l'onglet COM Choisissez "Bibliothèque d'objets Microsoft Outlook 11.0" (MS Office 2003 - je pense que 10.0 correspond à Office XP) et cliquez sur Sélectionner. Cliquez sur OK. Notez que vous pouvez accéder à tous les types d'objets Outlook/Exchange, par exemple Rendez-vous, Notes, Tâches, Emails, etc - utilisez simplement intellisense pour sélectionner lequel (par exemple Microsoft.Office.Interop.Outlook ... - voir la définition de la variable appelée ' item 'ci-dessous).

Voici le code:

Microsoft.Office.Interop.Outlook.Application app = null; 
Microsoft.Office.Interop.Outlook._NameSpace ns = null; 
Microsoft.Office.Interop.Outlook.PostItem item = null; 
Microsoft.Office.Interop.Outlook.MAPIFolder inboxFolder = null; 
Microsoft.Office.Interop.Outlook.MAPIFolder subFolder = null; 

try 
{ 
    app = new Microsoft.Office.Interop.Outlook.Application(); 
    ns = app.GetNamespace("MAPI"); 
    ns.Logon(null,null,false, false); 

    inboxFolder = ns.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderInbox); 
    subFolder = inboxFolder.Folders["MySubFolderName"]; //folder.Folders[1]; also works 
    Console.WriteLine("Folder Name: {0}, EntryId: {1}", subFolder.Name, subFolder.EntryID); 
    Console.WriteLine("Num Items: {0}", subFolder.Items.Count.ToString()); 

for(int i=1;i<=subFolder.Items.Count;i++) 
{ 
    item = (Microsoft.Office.Interop.Outlook.PostItem)subFolder.Items[i]; 
    Console.WriteLine("Item: {0}", i.ToString()); 
    Console.WriteLine("Subject: {0}", item.Subject); 
    Console.WriteLine("Sent: {0} {1}" item.SentOn.ToLongDateString(), item.SentOn.ToLongTimeString()); 
    Console.WriteLine("Categories: {0}", item.Categories); 
    Console.WriteLine("Body: {0}", item.Body); 
    Console.WriteLine("HTMLBody: {0}", item.HTMLBody); 
    } 
} 
catch (System.Runtime.InteropServices.COMException ex) 
{ 
    Console.WriteLine(ex.ToString()); 
} 
finally 
{ 
    ns = null; 
    app = null; 
    inboxFolder = null; 
} 

Source @http://geekswithblogs.net/TimH/archive/2006/05/26/79720.aspx.

vérifier aussi:

http://msdn.microsoft.com/en-us/library/bb610835(v=office.14).aspx

Questions connexes