2011-07-27 20 views
5

Outlook 2010で2つのExchangeアカウントを設定しましたが、2番目のアカウントの受信トレイに移動する方法はわかりません。 Session.GetDefaultFolder()は常に最初のものを返します。 Outlookから受信トレイを取得する

でも右のアカウントを見つけ、(二次ではない、デフォルトのExchangeアカウントからの)間違った受信トレイ Session.Account(found one).Store.GetDefaultFolder()リターンを呼び出し、Session.Accountsを列挙。

+0

私のコードがあなたに役立つかどうかを知りたいですか? – JimmyPena

答えて

4

利用可能なすべての受信トレイが表示されますか?

Sub LoopThroughInboxes 

Dim ol As Outlook.Application 
Dim ns As Outlook.NameSpace 
Dim i As Long 

Set ol = Outlook.Application 
Set ns = ol.GetNamespace("MAPI") 

For i = 1 To ns.Folders.Count 
Debug.Print ns.Folders(i).Name 
Next i 

もしそうなら、ns.Folders(i).Folders("Inbox")はあなたに各メールボックスの受信トレイを与えます。

3

Namespace.GetDefaultFolderの代わりにStore.GetDefaultFolderを使用します。 Store.GetDefaultFolderは、以前のバージョンのOutlookでOutlook 2010に追加されたことを 注意を。たぶん、あなたは長い間この質問にあきらめた

1

拡張MAPI(C++やDelphi)またはRedemption(RDOStore.GetDefaultFolderを使用していますが、ここに行きます...

私は前にこの同じ問題を抱えていたと私は、Outlookアカウント管理のAPIを追加して、それを解決した。残念ながらあなたのために、このC++指向のAPIが。

(マイアドインは既にC++で開発されました)さらに、VBAと.NETアドインが使用するOOM(Outlook Object Model)は、複数のアカウントをサポートしていないと、貧弱です(もしあれば)。基本的にあなたのプロフィールに複数のアカウントを追加しました。

したがって、MAPIをC++で使用してレベルを下げ、Outlookアカウント管理APIをフックする必要があります。それはたくさんの仕事ですが、それは私がやったことです。それは魅力のように機能しました。

はまた、ここでは一例です: http://www.codeproject.com/KB/IP/IOlkAccountManager.aspx

3

Mapix library for C++/MFC

以下に示すよう注意MAPIXライブラリ

MAPIXライブラリのリンクに行くために:受信トレイのためこのライブラリの有効MS Outlookのメール

0

これは古いものだと思うが、ある人はいつかそれを必要とするかもしれない。 Outlookの「送信済みメール」フォルダをすべて反復するコードです。 (私はこれがOutlook 2010以降でのみ動作すると思います)。

MSOutlook._NameSpace ns = Globals.ThisAddIn.Application.GetNamespace("MAPI"); 
var accounts = ns.Accounts; 
foreach (MSOutlook.Account account in accounts) 
{ 
    try 
    { 
     // You might want to test if DeliveryStore is null, in case this account is not an Exchange account 
     MSOutlook.MAPIFolder sentFolder = account.DeliveryStore.GetDefaultFolder(MSOutlook.OlDefaultFolders.olFolderSentMail); 
     if(sentFolder != null) 
     { 
      SentItems = sentFolder.Items; 
      SentItems.ItemAdd += LogMethods.Items_Sent_ItemAdd; 
     } 
    } 
    catch (Exception e) 
    { 
     BaseClass.log.Log(LoggLevel.Warning, e.Message); 
    } 
} 
関連する問題