2017-09-18 27 views
0

私はMicrosoft.Office.Interop.Outlookを使用してOutlookを使用して電子メールを取得しようとしていますが、フォルダに電子メール(たとえば1904個の電子メール)たった571通の電子メール。私はOutlookを開いたときに、私は次の受信フォルダに番号1904を参照してください、私はスクロールダウンしたときに、私は、このフォルダ内の複数の項目は、サーバ上である」行を参照してくださいOutlookの相互運用アプリケーションがすべての電子メールを取得しないC#

 Application oApp = new Application(); 
     _NameSpace oNS = (_NameSpace)oApp.GetNamespace("MAPI"); 
     MAPIFolder inbox = oNS.GetDefaultFolder(OlDefaultFolders.olFolderInbox); 
     var emails = inbox.Items; 
     int emailsCount = emails.Count; 

:ここ

は私のコードです"

誰もがどのように私の電子メールをOutlook interopを使ってダウンロードできますか?

答えて

0

が、これは作業アプリから私のコードです:それの

多くはスレッジハンマーでナットを割れそうですが、このhasntは、多くの年で私を失敗しました。

MAPIFolder f; 

    int retries = 0; 
    while (!connected && retries < 2) 
    { 
     doUpdateStatus("Connecting"); 
     try 
     { 
      app = new Application(); 
      NameSpace ns = app.GetNamespace("MAPI"); 
      f = ns.GetDefaultFolder(OlDefaultFolders.olFolderInbox); 
      doUpdateStatus("Connected to outlook"); 
      doUpdateStatus("Walking Outlook Folders .. Please wait"); 
      try 
      { 
       doUpdateStatus(""); 
       if (DoSync) 
       { 
        try 
        { 

         doUpdateStatus("Syncing"); 
         SyncObject _syncObj = null; 
         _syncObj = ns.SyncObjects.AppFolders; 
         _syncObj.SyncEnd += _syncObj_SyncEnd; 
         ns.SendAndReceive(false); 
         syncing = true; 
         _syncObj.Start(); 
         while (syncing) 
         { 
          Thread.Sleep(10); 
         } 
         connected = true; 
        } 
        catch 
        { 
         doUpdateStatus("Sync failed"); 
        } 
        finally 
        { 
         syncing = false; 
        } 
       } 
       else 
       { 
        doUpdateStatus("Outlook sync disabled"); 
        connected = true; 
       } 

      } 

      catch 
      { 
       doUpdateStatus("Unable to connect to Outlook and Load folders"); 
       app.Quit(); 
       retries++; 
       Thread.Sleep(5000); 
      } 

     } 
     catch 
     { 
      doUpdateStatus("Unable to connect to Outlook"); 
      if (app!=null) app.Quit(); 
      retries++; 
      Thread.Sleep(5000); 
     } 
    } 
    private static void _syncObj_SyncEnd() 
    { 
     syncing = false; 
    } 
0

あなたは(12ヶ月 『「すべて」というようなことよりも、』設定されているExchangeアカウントのプロパティでスライダーを確認してください)全てのアイテムをダウンロードするには、Outlookを強制するか、またはあなたがオンラインでフォルダを再度開くことができますモード - 拡張MAPI(C++またはデルファイ)で、あなたがIMAPISession :: OpenEntryまたはIMsgStoreを呼び出すときMAPI_NO_CACHEフラグを使用していることを行うことができます:: OpenEntry拡張MAPIができない場合は、あなたがRedemptionを使用することができます。

MAPI_NO_CACHE = &H200 
MAPI_BEST_ACCESS = &H10 
set OutlookFolder = Application.ActiveExplorer.CurrentFolder 
set Session = CreateObject("Redemption.RDOSession") 
Session.MAPIOBJECT = Application.Session.MAPIOBJECT 
set OnlineFolder = Session.GetFolderFromID(OutlookFolder.EntryID, OutlookFolder.StoreID, MAPI_NO_CACHE + MAPI_BEST_ACCESS) 
MsgBox OnlineFolder.Items.Count 
関連する問題