Gestionar archivos de mensaje con Aspose.Email.Outlook

Conversión de MSG a mensaje MIME

La API Aspose.Email brinda la capacidad de convertir archivos MSG a mensajes MIME usando el toMailMessage método.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
MapiMessage msg = new MapiMessage(
                            "sender@test.com",
                            "recipient1@test.com; recipient2@test.com",
                            "Test Subject",
                            "This is a body of message.");
MailConversionOptions options = new MailConversionOptions();
options.setConvertAsTnef(true);
MailMessage mail = msg.toMailMessage(options);

Conversión de MSG a EML Conservando el Cuerpo RTF

La API proporciona los siguientes métodos para preservar el cuerpo RTF al convertir MSG a EML:

Los siguientes ejemplos de código demuestran cómo mantener el cuerpo rtf en MailMessage:

MsgLoadOptions options = new MsgLoadOptions();
options.setPreserveRtfContent(true);
MailMessage message = MailMessage.load("fileName", options);
MapiMessage mapi = MapiMessage.load("fileName");
MailConversionOptions options = new MailConversionOptions();
options.setPreserveRtfContent(true);
MailMessage message = mapi.toMailMessage(options);

Conversión de MSG a MHTML Conservando el Encabezado de Categoría

La API Aspose.Email proporciona la capacidad de agregar un encabezado de categoría al convertir un mensaje a MHTML. Esta característica se especifica mediante el MhtSaveOptions clase como una opción adicional al guardar MailMessage en formato Mhtml.

El siguiente ejemplo de código demuestra cómo crear un archivo MHT (MHTML) a partir de un objeto MapiMessage, personalizar el formato y los encabezados del archivo MHT usando MhtSaveOptions, establecer categorías para el mensaje de correo y luego modificar las plantillas de formato y los encabezados de renderizado para el archivo MHT antes de guardarlo.

 MapiMessage msg = new MapiMessage("from@aaa.com", "to@aaa.com", "subj", "body");

msg.setCategories(new String[] { "Urgently", "Important" });

MhtSaveOptions saveOptions = new MhtSaveOptions();

saveOptions.getFormatTemplates().set_Item(MhtTemplateName.CATEGORIES,

    saveOptions.getFormatTemplates().get_Item(MhtTemplateName.CATEGORIES).replace("Categories", "Les catégories"));

saveOptions.getRenderingHeaders().add(MhtTemplateName.CATEGORIES);

msg.save("fileName.mhtml", saveOptions);

Lectura y Escritura de Archivo de Plantilla de Outlook (.OFT)

Las plantillas de Outlook son muy útiles cuando desea enviar un mensaje de correo electrónico similar una y otra vez. En lugar de preparar el mensaje desde cero cada vez, primero prepare el mensaje en Outlook y guárdelo como una Plantilla de Outlook (OFT). Después, siempre que necesite enviar el mensaje, puede crearlo a partir de la plantilla, ahorrando tiempo al escribir el mismo texto en el cuerpo o la línea de asunto, configurando el formato, etc. Aspose.Email MailMessage la clase puede usarse para cargar y leer un archivo de plantilla de Outlook (OFT). Una vez que la plantilla de Outlook se carga en una instancia de la MailMessage clase, puede actualizar el remitente, destinatario, cuerpo, asunto y otras propiedades. Después de actualizar las propiedades:

  • Enviar el correo usando el SmtpClient clase o
  • Guardar el mensaje como MSG y realizar más actualizaciones/validaciones usando Microsoft Outlook.

En los ejemplos de código a continuación, nosotros:

  1. Cargar la plantilla usando el MailMessage clase.
  2. Actualizar algunas de las propiedades.
  3. Guardar el mensaje en formato MSG.

El siguiente fragmento de código le muestra cómo cargar el archivo OFT, actualizar el mensaje y guardarlo en formato 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/";

// Load the Outlook template (OFT) file in MailMessage's instance
MailMessage message = MailMessage.load(dataDir + "sample.oft", new MsgLoadOptions());

// Set the sender and recipients information
String senderDisplayName = "John";
String senderEmailAddress = "john@abc.com";
String recipientDisplayName = "William";
String recipientEmailAddress = "william@xzy.com";

message.setSender(new MailAddress(senderEmailAddress, senderDisplayName));
message.getTo().addMailAddress(new MailAddress(recipientEmailAddress, recipientDisplayName));
message.setHtmlBody(message.getHtmlBody().replace("DisplayName", "<b>" + recipientDisplayName + "</b>"));

// Set the name, location and time in email body
String meetingLocation = "<u>" + "Hall 1, Convention Center, New York, USA" + "</u>";
String meetingTime = "<u>" + "Monday, June 28, 2010" + "</u>";
message.setHtmlBody(message.getHtmlBody().replace("MeetingPlace", meetingLocation));
message.setHtmlBody(message.getHtmlBody().replace("MeetingTime", meetingTime));

// Save the message in MSG format and open in Office Outlook
MapiMessage mapimessage = MapiMessage.fromMailMessage(message);
mapimessage.setMessageFlags(MapiMessageFlags.MSGFLAG_UNSENT);
mapimessage.save(dataDir + "ReadAndWritingOutlookTemplateFile_out.msg");

Guardando archivo MSG de Outlook como Plantilla

El siguiente fragmento de código le muestra cómo guardar el archivo MSG de Outlook como una plantilla.

// 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/";

try (MapiMessage mapi = new MapiMessage("test@from.to", "test@to.to", "template subject", "Template body")) {
    mapi.saveAsTemplate(dataDir + "mapiToOft.msg");
}

Configuración de Categoría de Color para Archivos MSG de Outlook

Una categoría de color marca un mensaje de correo electrónico con algún tipo de importancia o categoría. Microsoft Outlook permite a los usuarios asignar categorías de color para diferenciar correos. Para manejar la categoría de color, use el FollowUpManager. Contiene funciones como addCategory, removeCategory, clearCategories y getCategories.

  • addCategory toma MapiMessage y la cadena de categoría de color, por ejemplo, "Categoría Púrpura" o "Categoría Roja" como argumentos.
  • removeCategory toma MapiMessage y la cadena de categoría de color que se eliminará del mensaje.
  • clearCategories se utiliza para eliminar todas las categorías de color del mensaje.
  • getCategories se utiliza para recuperar todas las categorías de color de un mensaje en particular.

El siguiente ejemplo realiza las tareas descritas a continuación:

  1. Agregar una categoría de color.
  2. Agregar otra categoría de color.
  3. Recuperar la lista de todas las categorías.
  4. Eliminar todas las categorías.
// 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/";

MapiMessage msg = MapiMessage.fromFile(dataDir + "message.msg");

// Add Two category
FollowUpManager.addCategory(msg, "Purple Category");
FollowUpManager.addCategory(msg, "Red Category");

// Retrieve the list of available categories
IList categories = FollowUpManager.getCategories(msg);

// Remove the specified category and then Clear all categories
FollowUpManager.removeCategory(msg, "Red Category");
FollowUpManager.clearCategories(msg);

Accediendo a la Información de Seguimiento desde un archivo MSG

La API Aspose.Email proporciona la capacidad de acceder a la información de seguimiento de un mensaje enviado o recibido. Puede recuperar la información de lectura, recibo de entrega y resultados de votación de un archivo de mensaje.

Recuperación de Información de Recibos de Lectura y Entrega

El siguiente fragmento de código le muestra cómo recuperar la información de recibos de lectura y entrega.

// 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/";

MapiMessage msg = MapiMessage.fromFile(dataDir + "message.msg");
for (MapiRecipient recipient : msg.getRecipients()) {
    System.out.println("Recipient: " + recipient.getDisplayName());

    // Get the PR_RECIPIENT_TRACKSTATUS_TIME_DELIVERY property
    System.out.println("Delivery time: " + recipient.getProperties().get_Item(MapiPropertyTag.PR_RECIPIENT_TRACKSTATUS_TIME_DELIVERY).getDateTime());

    // Get the PR_RECIPIENT_TRACKSTATUS_TIME_READ property
    System.out.println("Read time" + recipient.getProperties().get_Item(MapiPropertyTag.PR_RECIPIENT_TRACKSTATUS_TIME_READ).getDateTime());
}

Crear mensajes de reenvío y respuesta

La API Aspose.Email proporciona la capacidad de crear y formatear mensajes de reenvío y respuesta. El ReplyMessageBuilder y ForwardMessageBuilder las clases de la API se usan para crear respectivamente los mensajes Reply y Forward. Un mensaje Reply o Forward puede especificarse para crearse usando cualquiera de los modos de OriginalMessageAdditionMode enumeración. Esta enumeración tiene los siguientes valores:

  • OriginalMessageAdditionMode.None - El mensaje original no se incluye en el mensaje de respuesta.
  • OriginalMessageAdditionMode.Attachment - El mensaje original se incluye como adjunto en el mensaje de respuesta
  • OriginalMessageAdditionMode.Textpart - El mensaje original se incluye como texto en el cuerpo del mensaje de respuesta

Crear mensaje de respuesta

El siguiente fragmento de código muestra cómo crear un mensaje de respuesta.

// 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/";

MapiMessage originalMsg = MapiMessage.fromFile(dataDir + "message1.msg");
ReplyMessageBuilder builder = new ReplyMessageBuilder();

// Set ReplyMessageBuilder Properties
builder.setReplyAll(true);
builder.setAdditionMode(OriginalMessageAdditionMode.Textpart);
builder.setResponseText(
        "<p><b>Dear Friend,</b></p> I want to do is introduce my co-author and co-teacher. <p><a href=\"www.google.com\">This is a first link</a></p><p><a href=\"www.google.com\">This is a second link</a></p>");

MapiMessage replyMsg = builder.buildResponse(originalMsg);
replyMsg.save(dataDir + "reply_out.msg");

Crear un mensaje de reenvío

El siguiente fragmento de código muestra cómo crear un mensaje de reenvío.

// 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/";

MapiMessage originalMsg = MapiMessage.fromFile(dataDir + "message1.msg");
ForwardMessageBuilder builder = new ForwardMessageBuilder();
builder.setAdditionMode(OriginalMessageAdditionMode.Textpart);
MapiMessage forwardMsg = builder.buildResponse(originalMsg);
forwardMsg.save(dataDir + "forward_out.msg");

Conservar fechas vacías al convertir un mensaje

MapiConversionOptions.setPreserveEmptyDates(boolean) propiedad que indica si es necesario conservar fechas vacías al convertir un mensaje. Esta API aparece en Aspose.Email 21.5. El siguiente fragmento de código muestra cómo preservar fechas vacías.

MailMessage mailMessage = MailMessage.load("message.eml");
System.out.println(mailMessage.getDate()); // zero date
MapiConversionOptions mco = MapiConversionOptions.getUnicodeFormat();
// keep empty dates when converting a message
mco.setPreserveEmptyDates(true);
MapiMessage mapiMessage = MapiMessage.fromMailMessage(mailMessage, mco);
System.out.println(mapiMessage.getClientSubmitTime()); // zero date
// check zero date
if (mapiMessage.getClientSubmitTime().equals(JavaHelper.ZERO_DATE))
    System.out.println("ZERO DATE");