Guardar mensajes de la bandeja de entrada del servidor Exchange usando WebDav

Este artículo muestra cómo obtener mensajes de la bandeja de entrada de un servidor Exchange y guardarlos en disco en formatos EML y MSG.

Guardar mensajes de una bandeja de entrada de Exchange en EML

Para obtener mensajes y guardarlos en formato EML:

  1. Cree una instancia de la clase ExchangeClient.
  2. Proporcione el nombre del servidor, el nombre de usuario, la contraseña y el dominio.
  3. Llame al método ExchangeClient.listMessages() para obtener una instancia de la colección ExchangeMessagesInfoCollection.
  4. Recorra la colección ExchangeMessagesInfoCollection para obtener la URI única de cada mensaje.
  5. Llame al método ExchangeClient.saveMessage() y pase la URI única como parámetro.
  6. Proporcione un método saveMessage() con una ruta a donde desea guardar el archivo.  
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Create instance of ExchangeClient class by giving credentials
ExchangeClient client = new ExchangeClient("http://servername/exchange/username", "username", "password", "domain");
// Call ListMessages method to list messages info from Inbox
ExchangeMessageInfoCollection msgCollection = client.listMessages(client.getMailboxInfo().getInboxUri());
for (ExchangeMessageInfo msgInfo : msgCollection) {
String strMessageURI = msgInfo.getUniqueUri();
// Now save the message in disk
client.saveMessage(strMessageURI, dataDir + msgInfo.getMessageId() + ".eml");
}

Guardar mensajes en un OutputStream

En lugar de guardar archivos EML en el disco, es posible guardarlos en un OutputStream. Esto es útil cuando desea guardar el flujo en alguna ubicación de almacenamiento como una base de datos. Una vez que el flujo se ha guardado en una base de datos, puede recargar el archivo EML en la clase MailMessage.

Los fragmentos de código a continuación guardan mensajes de una bandeja de entrada de Exchange en un flujo de memoria.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Create instance of ExchangeClient class by giving credentials
ExchangeClient client = new ExchangeClient("http://ex07sp1/exchange/Administrator", "user", "pwd", "domain");
// Call ListMessages method to list messages info from Inbox
ExchangeMessageInfoCollection msgCollection = client.listMessages(client.getMailboxInfo().getInboxUri());
// Loop through the collection to get Message URI
for (ExchangeMessageInfo msgInfo : msgCollection) {
String strMessageURI = msgInfo.getUniqueUri();
try {
OutputStream outputStream = new FileOutputStream(dataDir + msgInfo.getMessageId() + "_Out.eml");
client.saveMessage(strMessageURI, outputStream);
} catch (Exception e) {
e.printStackTrace();
}
}

Guardar mensajes en formato MSG

El método ExchangeClient.saveMessage() puede guardar directamente el mensaje en formato EML. Para guardar los mensajes en formato MSG, primero, llame al método ExchangeClient.fetchMessage() que devuelve una instancia de la clase MailMessage. Luego, llame al método MailMessage.save() para guardar el mensaje en MSG.

El fragmento de código a continuación obtiene mensajes de una bandeja de entrada de Exchange y los guarda en formato MSG.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Create instance of ExchangeClient class by giving credentials
ExchangeClient client = new ExchangeClient("http://ex07sp1/exchange/Administrator", "user", "pwd", "domain");
// Call ListMessages method to list messages info from Inbox
ExchangeMessageInfoCollection msgCollection = client.listMessages(client.getMailboxInfo().getInboxUri());
for (ExchangeMessageInfo msgInfo : msgCollection) {
String strMessageURI = msgInfo.getUniqueUri();
// Now get the message details using FetchMessage()
MailMessage msg = client.fetchMessage(strMessageURI);
// Save message as MSG
msg.save(dataDir + msgInfo.getMessageId() + ".msg", SaveOptions.getDefaultMsg());
}