2011-07-27 129 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); 
    } 
} 
相关问题