我在Outlook 2010中配置了兩個Exchange帳戶,但無法找到如何到達第二個帳戶的收件箱。 Session.GetDefaultFolder()
總是返回第一個。從Outlook獲取收件箱
即使枚舉Session.Accounts,找到正確的帳戶並呼籲Session.Account(found one).Store.GetDefaultFolder()
返回錯誤收件箱(從默認交換帳戶,而不是輔助)。
我在Outlook 2010中配置了兩個Exchange帳戶,但無法找到如何到達第二個帳戶的收件箱。 Session.GetDefaultFolder()
總是返回第一個。從Outlook獲取收件箱
即使枚舉Session.Accounts,找到正確的帳戶並呼籲Session.Account(found one).Store.GetDefaultFolder()
返回錯誤收件箱(從默認交換帳戶,而不是輔助)。
這是否顯示您所有可用的收件箱?
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")
將爲您獲取每個郵箱的收件箱。
使用Store.GetDefaultFolder而不是Namespace.GetDefaultFolder。 注意Store.GetDefaultFolder在Outlook 2010中添加在早期版本的Outlook使用擴展MAPI(C++或Delphi)或Redemption(RDOStore.GetDefaultFolder。
也許你早就在這個問題上放棄了,但在這裏不用...
我以前有同樣的問題,我通過添加Outlook帳戶管理API解決了這個問題。不幸的是你,這個面向C++的API。
(我的插件已經用C++開發的)此外,VBA和.NET插件使用的OOM(Outlook對象模型)對多個帳戶的支持很差(如果有的話)。通過添加到交換帳戶,您可以實質上是將多個帳戶添加到您的個人資料
所以,您可能不得不在一個級別上使用MAPI和C++,然後在Outlook帳戶管理API中掛鉤。這是很多工作,但這完全是我所做的,而且它像魅力一樣工作。
而且,這裏有一個例子: http://www.codeproject.com/KB/IP/IOlkAccountManager.aspx
我想這是一箇舊的,但有一天可能有人需要它。 這裏是迭代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);
}
}
想知道我的代碼是否適合您。 – JimmyPena