Crear y guardar archivos MSG

Aspose.Email admite crear archivos de mensaje Outlook (MSG). Este artículo explica cómo:

  • Crear mensajes MSG.
  • Crear mensajes MSG con adjuntos.
  • Crear un mensaje MSG con un cuerpo RTF.
  • Guardar un mensaje como borrador.
  • Trabajar con compresión del cuerpo.

Crear y guardar mensajes Outlook

El MailMessage clase tiene el guardar método que puede guardar archivos Outlook MSG en disco o en un stream. Los fragmentos de código a continuación crean una instancia de la MailMessage clase, establece propiedades como from, to, subject y body. El guardar el método toma el nombre de archivo como argumento. Además, los mensajes de Outlook pueden crearse con un cuerpo RTF comprimido usando el MapiConversionOptions.

  1. Crea una nueva instancia de la MailMessage clase y establece las propiedades From, To, Subject y Body.
  2. Llame al MapiMessage clase fromMailMessage método que acepta el objeto de la MailMessage tipo. El fromMailMessage método convierte el MailMessage en un MapiMessage (MSG).
  3. Llame al MapiMessage.save método para guardar el archivo MSG.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// The path to the File directory.
String dataDir = "outlook/";

// Create an instance of the MailMessage class
MailMessage mailMsg = new MailMessage();

// Set from, to, subject and body properties
mailMsg.setFrom(MailAddress.to_MailAddress("sender@domain.com"));
mailMsg.setTo(MailAddressCollection.to_MailAddressCollection("receiver@domain.com"));
mailMsg.setSubject("This is test message");
mailMsg.setBody("This is test body");

// Create an instance of the MapiMessage class and pass MailMessage as argument
MapiMessage outlookMsg = MapiMessage.fromMailMessage(mailMsg);

// Save the message (MSG) file
String strMsgFile = "CreatingAndSavingOutlookMessages_out.msg";
outlookMsg.save(dataDir + strMsgFile);

Crear archivos MSG con adjuntos

En el ejemplo anterior, creamos un archivo MSG sencillo. Aspose.Email también admite guardar archivos de mensaje con adjuntos. Todo lo que necesitas hacer es agregar los adjuntos al MailMessage instancia. Agrega archivos adjuntos llamando al método addItem en el MailMessage.Attachments colección.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// The path to the File directory.
String dataDir = "outlook/";

String[] files = new String[2];
files[0] = "attachment.doc";
files[1] = "attachment.png";

// Create an instance of the MailMessage class
MailMessage mailMsg = new MailMessage();

// Set from, to, subject and body properties
mailMsg.setFrom(MailAddress.to_MailAddress("sender@domain.com"));
mailMsg.setTo(MailAddressCollection.to_MailAddressCollection("receiver@domain.com"));
mailMsg.setSubject("This is test message");
mailMsg.setBody("This is test body");

// Add the attachments
for (String strFileName : files)
{
    mailMsg.getAttachments().addItem(new Attachment(strFileName));
}

// Create an instance of MapiMessage class and pass MailMessage as argument
MapiMessage outlookMsg = MapiMessage.fromMailMessage(mailMsg);
String strMsgFile = "CreateMessagesWithAttachments.msg";
outlookMsg.save(dataDir + strMsgFile);

Crear archivos MSG con cuerpo RTF

También puedes crear archivos de mensaje Outlook (MSG) con cuerpos de texto enriquecido (RTF) usando Aspose.Email. El cuerpo RTF admite formato de texto. Crea uno estableciendo el MailMessage.HtmlBody propiedad. Cuando conviertes un MailMessage instancia en un MapiMessage instancia, el cuerpo HTML se convierte a RTF. De esta manera, el formato del cuerpo del correo se preserva.

El siguiente ejemplo crea un archivo MSG con un cuerpo RTF. Hay un encabezado, formato en negrita y subrayado aplicado en el cuerpo HTML. Este formato se conserva cuando el HTML se convierte a RTF.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// The path to the File directory.
String dataDir = "outlook/";

// Create an instance of the MailMessage class
MailMessage mailMsg = new MailMessage();

// Set from, to, subject and body properties
mailMsg.setFrom(MailAddress.to_MailAddress("sender@domain.com"));
mailMsg.setTo(MailAddressCollection.to_MailAddressCollection("receiver@domain.com"));
mailMsg.setSubject("This is test message");
mailMsg.setHtmlBody("<h3>rtf example</h3><p>creating an <b><u>outlook message (msg)</u></b> file using Aspose.Email.</p>");

MapiMessage outlookMsg = MapiMessage.fromMailMessage(mailMsg);
outlookMsg.save(dataDir + "CreatingMSGFilesWithRTFBody_out.msg");

Guardar mensaje en estado de borrador

Los correos electrónicos se guardan como borradores cuando alguien ha comenzado a editarlos pero quiere volver a ellos para completarlos más tarde. Aspose.Email admite guardar mensajes de correo en estado de borrador estableciendo una bandera de mensaje. A continuación se muestra el código de ejemplo para guardar un mensaje de correo de Outlook (MSG) como borrador.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// The path to the File directory.
String dataDir = "outlook/";

// Change properties of an existing MSG file
String strExistingMsg = "message.msg";

// Load the existing file in MailMessage and Change the properties
MailMessage msg = MailMessage.load(dataDir + strExistingMsg, new MsgLoadOptions());
msg.setSubject(msg.getSubject() + " NEW SUBJECT (updated by Aspose.Email)");
msg.setHtmlBody(msg.getHtmlBody() + " NEW BODY (udpated by Aspose.Email)");

// Create an instance of type MapiMessage from MailMessage, Set message flag to un-sent (draft status) and Save it
MapiMessage mapiMsg = MapiMessage.fromMailMessage(msg);
mapiMsg.setMessageFlags(MapiMessageFlags.MSGFLAG_UNSENT);
mapiMsg.save(dataDir + "SavingMessageInDraftStatus_out.msg");

Implicaciones de la compresión del cuerpo

El método de compresión del cuerpo RTF puede usarse para generar un MSG de tamaño más pequeño. Sin embargo, esto resulta en una velocidad de creación más lenta. Para crear mensajes con mayor velocidad, establezca la bandera en false. Esta bandera, a su vez, afecta a los PST creados: los archivos MSG más pequeños resultan en PST más pequeños, y los archivos MSG grandes resultan en una creación de PST más lenta.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
String fileName = "outlook/test.msg";

MailMessage message = MailMessage.load(fileName);
MapiConversionOptions options = new MapiConversionOptions();
options.setUseBodyCompression(true);
MapiMessage ae_mapi = MapiMessage.fromMailMessage(message, options);