Trabajar con archivos adjuntos de mensajes

Análisis y almacenamiento de archivos adjuntos

Los archivos de mensajes de Outlook pueden contener uno o más archivos adjuntos. Aspose.Email permite a los desarrolladores revisar los archivos adjuntos de un archivo MSG y guardarlos en el disco. En este tema se describe el proceso. También describe cómo incrustar un archivo adjunto.

Aspose.Email MapiMessage la clase se usa para cargar un archivo MSG desde el disco y expone el getAttachments() método que hace referencia al MapiAttachment colección de objetos asociada al archivo MSG. La MapiAttachment El objeto expone además los métodos que realizan acciones en el archivo adjunto.

Para guardar los archivos adjuntos de un archivo MSG en un disco con el nombre y la extensión originales:

  1. Crea una instancia del MapiMessage clase para cargar un archivo MSG usando el Load() método estático.
  2. Llame al MapiRecipient class getAttachments() método para obtener una referencia a la colección de MapiAttachment objetos asociados al archivo MSG.
  3. Recorre el MapiAttachmentCollection para mostrar el contenido de cada MapiAttachment objetar a través de sus métodos públicos.
  4. Llame al MapiAttachment class save() método para guardar el archivo adjunto en el disco.  

Incrustar mensajes como archivos adjuntos

Un mensaje de Microsoft Outlook puede contener otros mensajes de Microsoft Outlook en archivos adjuntos, ya sea como mensajes normales, descritos anteriormente, o como mensajes incrustados. El MapiAttachmentCollection proporciona miembros sobrecargados del método add para crear mensajes de Outlook con ambos tipos de datos adjuntos. Los archivos MSG de Outlook incrustados en un archivo MSG contienen un PR_ATTACH_METHOD con el valor 5.

Lectura de un mensaje incrustado desde un archivo adjunto

Inserción y reemplazo de archivos adjuntos MSG

La API Aspose.Email ofrece la capacidad de insertar archivos adjuntos en un índice específico en el mensaje principal. También ofrece la posibilidad de reemplazar el contenido de un adjunto por otro adjunto de mensaje.

Inserte el archivo adjunto MSG en una ubicación específica

La API Aspose.Email ofrece la capacidad de insertar un archivo adjunto de MSG en un MSG principal mediante el MapiAttachmentCollection.Insert() method.

Reemplazar el contenido del archivo adjunto MSG incrustado

Esto se puede usar para reemplazar el contenido de los archivos adjuntos incrustados por otros nuevos mediante el Replace método. Sin embargo, no se puede usar para insertar datos adjuntos con PR_ATTACH_NUM = 4 (por ejemplo) en la colección con Collection.count = 2.

Guardar archivos adjuntos de un mensaje firmado digitalmente

La API Aspose.Email ofrece la capacidad de obtener o establecer un valor que indique si se decodificará un mensaje con firma clara. 

Cambiar el nombre de un archivo adjunto en un MAPIMessage

Aspose.Email permite editar el DisplayName valor de la propiedad en Adjuntos de MapiMessage.

El siguiente ejemplo de código muestra cómo actualizar los nombres para mostrar del primer y segundo archivo adjunto del mensaje Mapi cargado:

MapiMessage msg = MapiMessage.load(fileName);
msg.getAttachments().get_Item(0).setDisplayName("New display name 1");
msg.getAttachments().get_Item(1).setDisplayName("New display name 2");

Comprueba si un archivo adjunto está en línea o es normal

La diferencia entre los archivos adjuntos en línea y los archivos adjuntos normales es la forma en que se presentan en un correo electrónico. Los archivos adjuntos en línea están incrustados en el cuerpo del correo electrónico y se pueden ver sin tener que abrir un archivo separado ni descargar nada. Los archivos adjuntos normales, por otro lado, son archivos independientes que se adjuntan al correo electrónico, pero no se muestran directamente en el cuerpo del mensaje y deben descargarse y abrirse externamente. El MapiAttachment.IsInline propiedad del MapiAttachment la clase obtiene un valor que indica si el adjunto está en línea o es normal.

En el siguiente ejemplo de código, se carga un mensaje de correo electrónico desde un archivo y, a continuación, se recupera la información sobre los archivos adjuntos. En concreto, se imprime el nombre para mostrar de cada archivo adjunto y si está en línea en el mensaje o no:

MapiMessage message = MapiMessage.load("fileName");

for (MapiAttachment attach : message.getAttachments()) {
    System.out.println(attach.getDisplayName() + ": " + attach.isInline());
}