Enviar, leer y organizar mensajes en el servidor Exchange

Recuperar información del buzón Exchange con EWS

Aspose.Email le permite recuperar detalles del buzón de Microsoft Exchange usando el IEWSClient clase. Al llamar al GetMailboxInfo() método, el cliente devuelve un ExchangeMailboxInfo objeto que contiene URIs útiles de carpetas como Buzón, Bandeja de entrada, Borradores y Elementos enviados.

Para conectarse al servidor Exchange con Exchange Web Services (EWS), use el IEWSClient clase. Esta clase usa EWS para conectarse y gestionar elementos en un servidor Exchange.

El siguiente fragmento de código demuestra cómo obtener información del buzón usando los servicios web de Exchange.

Enviar mensajes de correo electrónico a través de EWS

Puede enviar correos electrónicos a través de Exchange llamando al IEWSClient->Send() método. Toma un MailMessage objeto y lo envía directamente a través del servidor usando EWS.

El siguiente ejemplo de código muestra cómo enviar un mensaje de correo electrónico HTML a través de un servidor Exchange usando Exchange Web Services (EWS) con Aspose.Email para C++. Muestra el proceso completo de establecer una conexión a Exchange, crear un mensaje de correo con remitente, destinatario, asunto y contenido HTML, y luego enviar el mensaje usando el método Send del cliente EWS.

Lectura de correos electrónicos del buzón de otro usuario

Algunas cuentas en los servidores Exchange tienen derecho a acceder a varios buzones, y algunos usuarios tienen varias cuentas de correo electrónico en el mismo servidor Exchange. En ambos casos, los usuarios pueden acceder a los buzones de otros usuarios con Aspose.Email. La API proporciona un mecanismo para acceder a carpetas y correos electrónicos de otros buzones utilizando el IEWSClient clase. Esta funcionalidad puede lograrse usando la sobrecarga de GetMailboxInfo() método y proporcionando la dirección de correo del usuario como parámetro.

El siguiente fragmento de código le muestra cómo leer correos electrónicos usando el IEWSClient clase.

Listar mensajes usando EWS

Aspose.Email for C++ le permite recuperar los metadatos del mensaje de los buzones del servidor Exchange a través del IEWSClient. Usando el basado en EWS ListMessages API, puede listar mensajes de cualquier carpeta, explorar los metadatos del mensaje y aplicar paginación para buzones grandes.

Listar mensajes de la bandeja de entrada

Usar ListMessages para recuperar información básica del mensaje como asunto, remitente, destinatarios e ID del mensaje desde la Bandeja de entrada o cualquier carpeta.

El siguiente ejemplo de código muestra cómo enumerar y mostrar información básica de todos los mensajes en un servidor Exchange.

  1. Cree una instancia de IEWSClient.
  2. Llame a ListMessages con el URI de la carpeta objetivo.
  3. Iterar sobre ExchangeMessageInfoCollection.

Listar mensajes de cualquier carpeta

ListMessages acepta cualquier URI de carpeta válido, permitiéndole listar elementos de Elementos eliminados, Borradores, Elementos enviados o carpetas personalizadas. Use el IEWSClient->get_MailboxInfo->xxxFolderUri propiedad para obtener el URI de diferentes carpetas.

El siguiente ejemplo de código muestra cómo acceder a diferentes URIs de carpetas del servidor Exchange y recuperar mensajes de una carpeta especificada.

Paginación en listado de mensajes

Para buzones grandes, use ListMessagesByPage para cargar mensajes en bloques más pequeños.

El siguiente ejemplo de código muestra cómo implementar paginación para recuperar un gran número de mensajes de la bandeja de entrada de un servidor Exchange.

  1. Primero, crea varios mensajes de prueba en el servidor.
  2. Luego, usa el ListMessagesByPage método para recuperar mensajes en lotes más pequeños (5 mensajes por página en este caso), iterando a través de todas las páginas hasta que se alcanza la última página.
  3. Finalmente, el código verifica que todos los mensajes fueron recuperados con éxito al contar el total de elementos en todas las páginas.

Obtener información del tipo de mensaje

Usar ExchangeMessageInfo->MessageInfoType para determinar el tipo subyacente de mensaje de Exchange (p. ej., correo electrónico, solicitud de reunión, etc.).

El siguiente ejemplo de código muestra cómo conectarse a un servidor Exchange y recuperar información del tipo de mensaje de la carpeta Elementos eliminados.

Guardar mensajes usando Exchange Web Services (EWS)

Aspose.Email le permite recuperar mensajes de un buzón de servidor Exchange y guardarlos en varios formatos, como EML, flujos de memoria y MSG. Los ejemplos a continuación demuestran cómo obtener información del mensaje y almacenar los mensajes usando el IEWSClient API.

Guardar mensajes como archivos EML

Para guardar los mensajes del buzón como archivos EML:

  1. Crear un IEWSClient instancia usando credenciales válidas.
  2. Llame a ListMessages() para recuperar un ExchangeMessagesInfoCollection.
  3. Iterar a través de la colección para acceder al URI único de cada mensaje.
  4. Llame a SaveMessage() para almacenar cada mensaje en disco en formato EML.

El siguiente ejemplo de código muestra cómo guardar mensajes de correo electrónico de la bandeja de entrada de un servidor Exchange como archivos EML individuales localmente usando Aspose.Email for C++.

Guardar mensajes en un flujo de memoria

En lugar de escribir en disco, puede guardar los mensajes en un flujo de memoria—útil para almacenar correos electrónicos en una base de datos o procesarlos en memoria.

El siguiente ejemplo de código muestra cómo guardar mensajes de correo electrónico de la bandeja de entrada de un servidor Exchange en flujos de memoria.

Guardar mensajes en formato MSG

Para guardar los mensajes como MSG:

  1. Recuperar el mensaje usando FetchMessage(), que devuelve un MailMessage.
  2. Llame a MailMessage::Save() con opciones de guardado MSG.

El siguiente ejemplo de código muestra cómo obtener y guardar mensajes de correo electrónico de la bandeja de entrada de un servidor Exchange como archivos en formato Outlook MSG.

Recuperar detalles del mensaje por URI del mensaje

Cuando solo está disponible el URI único de un mensaje, aún puede recuperar el mensaje completo. ExchangeMessageInfo objetos. El IEWSClient::ListMessages() sobrecarga acepta una lista de IDs de mensajes (URIs) y devuelve un ExchangeMessageInfoCollection. Use esta característica cuando almacena o recibe URIs de mensajes externamente y necesita cargar los metadatos (asunto, remitente, tamaño, etc.) sin obtener los mensajes completos.

El siguiente ejemplo de código muestra cómo crear varios mensajes de correo electrónico en un servidor Exchange y luego recuperar su información de mensaje usando identificadores únicos.

Obtener contenido completo del mensaje

ListMessages() devuelve información resumida (asunto, remitente, IDs). Para cargar el contenido completo del mensaje — cuerpo, encabezados, adjuntos — use FetchMessage().

El siguiente ejemplo de código muestra cómo obtener mensajes completos de la bandeja de entrada de un servidor Exchange y extraer información de los adjuntos:

  1. Crear un IEWSClient instancia.
  2. Llame a ListMessages() para obtener metadatos básicos del mensaje.
  3. Extraer el UniqueUri de cada mensaje.
  4. Llame a FetchMessage() para recuperar los detalles completos del mensaje.

Obtener tamaño del mensaje (sin descargar el mensaje completo)

Aspose.Email proporciona información del tamaño del mensaje sin obtener todo el correo electrónico, a través del ExchangeMessageInfo::Size propiedad.

Esto es útil para:

  • estadísticas del buzón
  • cálculos de cuota
  • filtrado de mensajes grandes antes de descargarlos

El siguiente ejemplo de código muestra cómo enumerar y mostrar metadatos de mensajes, incluido el tamaño, desde la bandeja de entrada de un servidor Exchange.

Descargar correos electrónicos de carpetas públicas de Exchange

Las carpetas públicas de Exchange permiten almacenar mensajes compartidos entre usuarios.

Aspose.Email IEWSClient le permite realizar las siguientes operaciones con estas carpetas y los mensajes almacenados en ellas:

  • Listar carpetas públicas
  • Explorar subcarpetas recursivamente
  • Descargar mensajes y guardarlos (p. ej., como archivos MSG)

Nota: Se requiere Microsoft Exchange Server 2007 o posterior, ya que las versiones anteriores no soportan EWS.

El siguiente ejemplo de código muestra cómo descargar mensajes de todas las carpetas públicas y sus subcarpetas en un servidor Exchange de forma recursiva, y guardarlos como archivos Outlook MSG localmente.

Mover mensajes entre carpetas Exchange

Puede mover mensajes de una carpeta Exchange a otra usando el IEWSClient::MoveItem método. Requiere:

  • El URI único del mensaje a mover.
  • El URI único de la carpeta de destino.

El siguiente ejemplo de código muestra cómo filtrar y mover mensajes de correo electrónico específicos de la bandeja de entrada de un servidor Exchange a otra carpeta según criterios de contenido.

  1. Conectar al servidor Exchange usando credenciales EWS.
  2. Obtener información del buzón (URIs de carpetas).
  3. Listar todos los mensajes de la Bandeja de entrada.
  4. Iterar a través de cada mensaje.
  5. Verificar si el asunto contiene "process this message".
  6. Mover los mensajes coincidentes a la carpeta Elementos eliminados.
  7. Mostrar confirmación para cada mensaje movido.

Eliminar mensajes de una carpeta Exchange

Puede eliminar correos electrónicos de una carpeta con la ayuda del IEWSClient->DeleteMessage método. Toma el URI único del mensaje como parámetro.

El siguiente ejemplo de código muestra cómo filtrar y eliminar mensajes de correo electrónico específicos de la bandeja de entrada de un servidor Exchange según criterios de asunto.

  1. Iterar a través de los mensajes de la Bandeja de entrada.
  2. Procesar mensajes basados en algunos criterios (en este ejemplo, buscamos una palabra clave en el asunto del mensaje).
  3. Eliminar los mensajes coincidentes.

Copiar mensajes a otra carpeta Exchange

Usar IEWSClient::CopyItem para duplicar un mensaje en una carpeta diferente. La versión sobrecargada devuelve el URI de la copia recién creada.

El siguiente ejemplo de código muestra cómo crear un mensaje de correo en un servidor Exchange y copiarlo a otra carpeta.