2016-12-30 5 views
0

Je crée une application de console C# dans Visual Studio 2015 qui imprime tous les e-mails à la console. J'ai des problèmes lorsque j'essaie de créer l'objet MAPIFolder. J'ai utilisé le code de cet article: Read emails from non default accounts in Outlook. Je peux créer un objet MAPIFolder à partir du compte par défaut en utilisant l'espace de noms, mais je ne peux pas créer d'objet de dossier en utilisant les magasins.Création d'un objet MAPIFolder en C# sur un compte Outlook 2007 non défini

using Microsoft.Office.Interop.Outlook; 
using static System.Console; 

namespace MoveEmailsDriver 

{ 
    class ProcessEmails 
    { 
     static void Main(string[] args) 
     { 
       PrintEmailBody(); 
     } 
     public static void PrintEmailBody() 
     { 
      Application app = new Application(); 
      _NameSpace ns = app.GetNamespace("MAPI"); 
      Stores stores = ns.Stores; 

      foreach(Store store in stores) 
      { 
       MAPIFolder inboxFolder = store.GetDefaultFolder(OlDefaultFolders.olFolderInbox); 

       foreach(MailItem item in inboxFolder.Items) 
       { 
        WriteLine(item.Body); 
       } 
      } 
     } 

    } 
} 

This is the exception error I am getting.

Répondre

0

I figured it out. J'ai dû créer un objet MAPIFolder avec la méthode GetRootFolder(). Ceci est le code mis à jour:

using Microsoft.Office.Interop.Outlook; 
using static System.Console; 

namespace OutlookDriverProgram 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Application app = new Application(); 
      NameSpace ns = app.GetNamespace("MAPI"); 
      Stores stores = ns.Stores; 

      foreach (Store store in stores) 
      { 
       //Uncomment next line to see the folder names 
       //WriteLine("Folder name = {0}", store.DisplayName); 
       if (store.DisplayName.Equals("YOURFOLDERNAME")) 
       { 

        MAPIFolder YOURFOLDERNAME = store.GetRootFolder(); 

        foreach (Folder subF in YOURFOLDERNAME.Folders) 
        { 

         if (subF.Name.Equals("Inbox")) 
         { 
          foreach (MailItem email in subF.Items) 
          { 
           WriteLine("Email subject = {0}", email.Subject); 
          } 

         } 

        } 
       } 

      } 
     } 

    } 
}