2012-04-19 7 views
7

Tengo una aplicación extrayendo correos electrónicos del 'Usuario A', con la dirección de correo electrónico [email protected] Utilizo el siguiente código para hacerlo:EWS Managed API: Búsqueda en una bandeja de entrada que no sea el buzón principal asociado con el inicio de sesión de Windows

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010); 
service.UseDefaultCredentials = true; 
service.Url = new Uri(ServerName); 

FindItemsResults<Item> findResults = service.FindItems(WellKnownFolderName.Inbox, new ItemView(500)); 

Esto funciona bien si el usuario A está conectado y ejecuta la aplicación.

Sin embargo, digamos que al "Usuario B" se le ha otorgado acceso a la bandeja de entrada del Usuario A y desea ejecutar la misma aplicación para extraer archivos de la Bandeja de entrada del Usuario A. ¿Cómo cambiaría el código anterior para especificar la bandeja de entrada de la cuenta de correo electrónico?

Sé que podría codificar los detalles de inicio de sesión del usuario A al obtener las credenciales, pero idealmente evitaría tener nombres de usuario codificados pero en su lugar usaré las credenciales del usuario que ejecuta la aplicación.

Esto puede ser simplemente mi falta de comprensión, pero soy relativamente nuevo en .net y muy nuevo en EWS. ¡Cualquier apuntador sería muy apreciado!

Gracias

Respuesta

15

Delegación es lo que necesitaba:

FolderId InboxId = new FolderId(WellKnownFolderName.Inbox, "[email protected]"); 
FindItemsResults<Item> findResults = service.FindItems(InboxId, new ItemView(500)); 
Cuestiones relacionadas