2011-07-27 22 views
5

Configuré dos cuentas de Exchange en Outlook 2010, sin embargo, no puedo averiguar cómo llegar a la Bandeja de entrada de la segunda cuenta. Session.GetDefaultFolder() siempre devuelve el primero.Obtener bandejas de entrada de Outlook

Incluso al enumerar Session.Accounts, encontrar la cuenta correcta y llamar al Session.Account(found one).Store.GetDefaultFolder() devuelve una bandeja de entrada incorrecta (de la cuenta de intercambio predeterminada, no secundaria).

+0

Me encantaría saber si mi código funcionó para usted. – JimmyPena

Respuesta

4

¿Esto le muestra todas las bandejas de entrada disponibles?

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 

Si es así, ns.Folders(i).Folders("Inbox") le conseguirá la Bandeja de entrada para cada buzón.

3

Use Store.GetDefaultFolder en lugar de Namespace.GetDefaultFolder. Tenga en cuenta que Store.GetDefaultFolder se añadió en Outlook 2010. En las versiones anteriores de Outlook utiliza MAPI extendido (C++ o Delphi) o Redemption (RDOStore.GetDefaultFolder.

1

Tal vez usted ha dado mucho sobre esta cuestión, pero aquí va ...

he tenido este mismo problema antes y lo resolví mediante la adición de la API de administración de cuentas de Outlook. por desgracia para ti, esto a C++ API orientada. (Mi complemento ya estaba desarrollado en C++)

Además, el OOM (Modelo de objetos de Outlook) que VBA y los complementos de .NET usan tiene poca compatibilidad (si existe) para varias cuentas. Al agregar cuentas de cambio, usted básicamente, ha agregado varias cuentas a su perfil.

Por lo tanto, es posible que tenga que bajar un nivel, utilizando MAPI con C++ y luego enganchar en la API de administración de cuentas de Outlook. Es mucho trabajo, pero eso es exactamente lo que hice y funcionó a las mil maravillas.

Además, aquí es un ejemplo: http://www.codeproject.com/KB/IP/IOlkAccountManager.aspx

3

para ir a la biblioteca MAPIX

MAPIX enlace biblioteca como se indica a continuación

Mapix library for C++/MFC

Nota: esta biblioteca válida para la bandeja de entrada correos electrónicos en MS Outlook

0

Supongo que este es uno viejo, pero alguien podría necesitarlo algún día. Aquí está el código para iterar todas las carpetas de "Correo enviado" en Outlook. (Creo que esto solo funcionará para Outlook 2010 y más reciente).

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); 
    } 
} 
Cuestiones relacionadas