2009-10-23 11 views
15

Estamos desarrollando un módulo con el objetivo principal de rastrear y recopilar información sobre las inspecciones de daños (mercado de seguros). Cada caja tiene un código (por ejemplo, L000525). Cada caso podría ser administrado por varias personas. Todos los correos electrónicos relacionados con un caso específico incluyen el código del caso en el tema.Usando la API de EWS para buscar entre los diferentes buzones de los usuarios

Lo que queremos hacer es recopilar y mostrar los correos entrantes y enviados relacionados con cada caso específico.

La idea es que cualquier usuario puede abrir una ventana de "Administración de casos", seleccionar un caso específico y luego obtener toda la información relacionada (incluidos los correos electrónicos, por supuesto).

Tenemos que encontrar los correos electrónicos en los buzones de correo de alrededor de 20 usuarios. Entonces las preguntas son:

  • ¿Cuál es la mejor manera de hacer esto? ¿Consumirá mucho tiempo y recursos?

Somos nuevos en el mundo del intercambio, por lo que estamos pensando en la suplantación de Exchange, pero no estamos seguros del todo. El módulo se desarrolla en Silverlight 3, WCF, SQL Server + Exchange 2007.

Respuesta

45

Si las credenciales utilizadas para conectarse a EWS tiene derechos para acceder al buzón de un usuario, entonces debería ser capaz de hacer algo como esto:

var service = new ExchangeService(); 
service.Credentials = new WebCredentials("[email protected]", "password"); 
service.AutodiscoverUrl("[email protected]"); 

var userMailbox = new Mailbox("[email protected]"); 
var folderId = new FolderId(WellKnownFolderName.Inbox, userMailbox); 

var itemView = new ItemView(20); // page size 
var userItems = service.FindItems(folderId, itemView); 

foreach (var item in userItems) 
{ 
    // do something with item (nb: it might not be a message) 
} 

Eso es todo. ¡Guau, mi primera respuesta SO!

+0

Esto definitivamente me ayudó. Necesitaba obtener una lista de todas las citas de calendarios compartidos desde un solo inicio de sesión. Resulta que, junto con establecer los permisos de "Revisor" en cada uno de los calendarios para mi inicio de sesión, era todo lo que necesitaba hacer. – cmptrgeekken

+0

En Exchange 2013 (Office 365), el usuario necesita al menos el permiso 'Detalles completos'. Limitado o solo la disponibilidad no funcionará. – harsimranb

+1

la clase se llama FolderId no FolderID, el resto funcionó bien. ¡Gracias! –

Cuestiones relacionadas