Extraer archivos adjuntos de mensajes usando Aspose.Email y Apache POI HSMF

Aspose.Email - Extraer archivos adjuntos de mensajes

Para guardar archivos adjuntos de mensajes existentes:

  1. Crear una instancia de la clase MailMessage.
  2. Cargar el mensaje de correo electrónico existente utilizando el método load() de la clase MailMessage, especificando el formato de mensaje correcto.
  3. Crear una instancia de la clase AttachmentCollection y llenarla con los archivos adjuntos de la instancia de MailMessage usando el método getAttachments().
  4. Iterar sobre la colección AttachmentCollection.
  5. Crear una instancia de la clase Attachment y llenarla con el valor indexado de la AttachmentCollection usando el método get().
  6. Guardar el archivo adjunto en el disco utilizando el método save() de la clase Attachment.

Java


 MailMessage message = MailMessage.load(dataDir + "message.msg");

System.out.println("Extrayendo archivos adjuntos....");

for (int i = 0; i < message.getAttachments().size(); i++)

{

    Attachment att = (Attachment) message.getAttachments().get_Item(i);

    System.out.println("Nombre del archivo adjunto: " + att.getName());

    String attFileName = att.getName().replace(".eml", "").replace(":", " ").replace("\\", " ").replace("/", " ").replace("?", "");

    // Guardar el archivo adjunto en el disco

    att.save(dataDir + attFileName);

}

Apache POI HSMF - Extraer archivos adjuntos de mensajes

La clase AttachmentChunks se puede usar para acceder a los archivos adjuntos de MAPIMessage.

Java


 MAPIMessage msg = new MAPIMessage(dataDir + "message.msg");

AttachmentChunks[] attachments = msg.getAttachmentFiles();

if (attachments.length > 0)

{

	File d = new File(dataDir + "attachments");

	if (d.exists() || d.mkdir())

	{

		for (AttachmentChunks attachment : attachments)

		{

			String fileName = attachment.attachFileName.toString();

			if (attachment.attachLongFileName != null)

			{

				fileName = attachment.attachLongFileName.toString();

			}

			File f = new File(d, fileName);

			OutputStream fileOut = null;

			try

			{

				fileOut = new FileOutputStream(f);

				fileOut.write(attachment.attachData.getValue());

			}

			finally

			{

				if (fileOut != null)

				{

					fileOut.close();

				}

			}

		}

	}

}

Descargar Código en Ejecución

Descargar Código de Ejemplo