2011-07-27 126 views
5

我在Outlook 2010中配置了兩個Exchange帳戶,但無法找到如何到達第二個帳戶的收件箱。 Session.GetDefaultFolder()總是返回第一個。從Outlook獲取收件箱

即使枚舉Session.Accounts,找到正確的帳戶並呼籲Session.Account(found one).Store.GetDefaultFolder()返回錯誤收件箱(從默認交換帳戶,而不是輔助)。

+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

使用Store.GetDefaultFolder而不是Namespace.GetDefaultFolder。 注意Store.GetDefaultFolder在Outlook 2010中添加在早期版本的Outlook使用擴展MAPI(C++或Delphi)或Redemption(RDOStore.GetDefaultFolder。

1

也許你早就在這個問題上放棄了,但在這裏不用...

我以前有同樣的問題,我通過添加Outlook帳戶管理API解決了這個問題。不幸的是你,這個面向C++的API。

(我的插件已經用C++開發的)此外,VBA和.NET插件使用的OOM(Outlook對象模型)對多個帳戶的支持很差(如果有的話)。通過添加到交換帳戶,您可以實質上是將多個帳戶添加到您的個人資料

所以,您可能不得不在一個級別上使用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); 
    } 
} 
相關問題