2016-12-11 1 views
-4

Je suis en train de développer un petit outil pour récupérer les emails d'Outlook en C#. Ci-dessous le code fonctionne très bienVisual Studio travaillant avec Microsoft.Office.Interop.Outlook

Microsoft.Office.Interop.Outlook.Application myApp = new Microsoft.Office.Interop.Outlook.Application(); 
Microsoft.Office.Interop.Outlook.NameSpace mapiNameSpace = myApp.GetNamespace("MAPI"); 
Microsoft.Office.Interop.Outlook.MAPIFolder myInbox = mapiNameSpace.Folders["[email protected]"].Folders["specificFolder"]; 

, mais est-il possible de remplacer la boîte aux lettres spécifique et le dossier avec des variables pour le rendre FLEXIBEL?

Le ci-dessous ne fonctionne pas comme le programme se termine par erreur, en disant qu'il ne peut pas trouver l'objet:

string MailBox="[email protected]"; 
string MailFolder="specificFolder"; 
Microsoft.Office.Interop.Outlook.MAPIFolder myInbox =  
    mapiNameSpace.Folders[MailBox].Folders[MailFolder]; 
+0

Êtes-vous sûr que ce code? Si la première façon a fonctionné, alors la deuxième façon serait. Le code ne se soucie pas de savoir s'il provient d'un littéral de chaîne ou d'une variable. En outre, le titre de votre question est trompeur - il semble que vous voulez qu'Outlook fonctionne avec Visual Studio, mais VS n'a vraiment rien à voir avec cette question. – mason

Répondre

0

La réponse était plus simple que je pensais, mais pas quitter claire. Bien que les deux MailBox et MailFolder ont été définis comme le type string je devais changer le code ci-dessous pour le faire fonctionner

string MailBox="[email protected]"; 
string MailFolder="specificFolder"; 
Microsoft.Office.Interop.Outlook.MAPIFolder myInbox =  
    mapiNameSpace.Folders[MailBox.ToString()].Folders[MailFolder.ToString()];