2012-07-19 12 views
5

Estoy creando una aplicación para acceder a una cuenta de correo electrónico en particular alojado en un servidor de Exchange 2003 y hacer algunas cosas a los mensajes de correo electrónico no leídos que se encuentran. Realmente no sé mucho sobre cómo funciona MAPI, así que no me sorprendería demasiado si me hubiera perdido algo muy obvio. Soy (por desgracia ) usando C#, he leído acerca de los problemas que esto pueda causar (y estoy temiendo las repercusiones, pero mi jefe quiere que se haga así para ..).¿Cómo conectarse a una cuenta específica de Outlook/Exchange?

estoy luchando para encontrar alguna buena información sobre cómo conectarse a una cuenta específica! La aplicación se llevará a cabo a partir de alguien portátil (digamos mina de), por lo que habrá una cuenta predeterminada que Outlook se conecta a cuando se abre. Entonces:

  • ¿Es posible conectarse a otra cuenta desde una máquina donde el usuario ya tiene su propia cuenta y probablemente tiene Outlook abierto?

  • si es posible. ¿Cómo hago esto? Al iniciar los objetos de interoperabilidad de Outlook, la aplicación obtiene automáticamente la cuenta de los usuarios y establece el usuario actual como tal. Esperaba que el método Logon() lo ordenara pero no. Incluso acaba de correr Outlook.Application olApp = new Outlook.Application(); Goes y establece el usuario actual a la cuenta estándar.

espero que estoy haciendo sentido (probablemente no), pero no dude en hacer preguntas más detalladas en los comentarios y voy a responder lo más rápidamente posible. Como dije, sé muy poco sobre MAPI y Exchange, así que estoy luchando con la forma de expresar mi pregunta.

Respuesta

4

Si desea conectarse a una cuenta de correo electrónico específica en Exchange 2003 es necesario utilizar WebDAV, CDOEX o ExOLEDB. Si usaba Exchange 2007+, podría usar EWS.

perspectiva de interoperabilidad sólo le permitirá conectar con la cuenta de escritorio interactivo (conectados en ese momento el usuario). La única forma de conectarse a otras cuentas es si la cuenta interactiva actual tiene added the shared mailbox.

+0

(suspiro) ... sospechaba que esto puede ser el caso, pero tenía que seguir adelante con la otra ruta. Gracias por el consejo. Los enlaces son puntos de partida útiles. – Jammerz858

1

Para eso, ejecute su código como usuario de dominio que puede acceder a los buzones en cuestión, llame al RDOSession. LogonExchangeMailbox para ese usuario, luego abra los buzones de otros usuarios usando RDOSession. GetSharedMailbox/GetSharedDefaultFolder.

Dado que Exchange 2013 ya no permite las conexiones de RPC antiguas (solo RPC a través de HTTP o MAPI a través de HTTP), puede usar RDOSession.LogonHostedExchangeMailbox (funciona tanto para Exchange 2013 como para Exchange 2010).

1

Si usted tiene 2 cuentas definidas en una misma máquina, puede utilizar lo siguiente: example

Outlook.Application app = new Outlook.Application(); 
Outlook.NameSpace ns = app.GetNamespace("MAPI"); 

// optional 
//object missing = Type.Missing; 
//ns.Logon(missing, missing, true, false); 

// additional email address 
string recipientName = "[email protected]"; 

Outlook.Recipient recip = ns.CreateRecipient(recipientName); 
recip.Resolve(); 

if (recip.Resolved) 
{ 
Outlook.MAPIFolder inboxFolder = ns.GetSharedDefaultFolder(recip, Outlook.OlDefaultFolders.olFolderInbox); 
} 
Cuestiones relacionadas