Creación y Guardado de Archivos MSG de Outlook usando la API de Email en C++

Creación y Guardado de Archivos MSG

Aspose.Email soporta la creación de archivos de mensaje de 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 de cuerpo.

Creación y Guardado de Mensajes de Outlook

La clase MailMessage tiene el método Save() que puede guardar archivos MSG de Outlook en disco o en un stream. Los fragmentos de código a continuación crean una instancia de la clase MailMessage, establecen propiedades como de, para, asunto y cuerpo. El método Save() toma el nombre del archivo como argumento. Además, los Mensajes de Outlook pueden ser creados con un cuerpo RTF comprimido usando las MapiConversionOptions. Para configurar, crea una nueva aplicación de Windows y añade una referencia al dll de Aspose.Email en el proyecto.

  1. Crea una nueva instancia de la clase MailMessage y establece las propiedades De, Para, Asunto y Cuerpo.
  2. Llama al método FromMailMessage de la clase MailMessage que acepta un objeto del tipo MailMessage. El método FromMailMessage() convierte el MailMessage en un MailMessage (MSG).
  3. Llama al método MapiMessage.Save() para guardar el archivo MSG.

Escribe el siguiente código en el evento click del control de botón de la aplicación de Windows.

For complete examples and data files, please go to https://github.com/kashifiqb/Aspose.Email-for-C
// Create an instance of the MailMessage class
System::SharedPtr<MailMessage> mailMsg = System::MakeObject<MailMessage>();
// Set from, to, subject and body properties
mailMsg->set_From(L"sender@domain.com");
mailMsg->set_To(L"receiver@domain.com");
mailMsg->set_Subject(L"This is test message");
mailMsg->set_Body(L"This is test body");
// Create an instance of the MapiMessage class and pass MailMessage as argument
System::SharedPtr<MapiMessage> outlookMsg = MapiMessage::FromMailMessage(mailMsg);
// Save the message (MSG) file
System::String strMsgFile = L"CreatingAndSavingOutlookMessages_out.msg";
outlookMsg->Save(dataDir + strMsgFile);

Creación de Archivos MSG Con Cuerpo RTF

También puedes crear archivos de Mensajes de Outlook (MSG) con cuerpos de texto enriquecido (RTF) usando Aspose.Email. El cuerpo RTF soporta el formato de texto. Crea uno estableciendo la propiedad MailMessage.HtmlBody. Cuando conviertes una instancia de MailMessage en una instancia de MailMessage, el cuerpo HTML se convierte en RTF. De esta manera, se preserva el formato del cuerpo del correo electrónico.

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

For complete examples and data files, please go to https://github.com/kashifiqb/Aspose.Email-for-C
// Create an instance of the MailMessage class
System::SharedPtr<MailMessage> mailMsg = System::MakeObject<MailMessage>();
// Set from, to, subject and body properties
mailMsg->set_From(L"from@domain.com");
mailMsg->set_To(L"to@domain.com");
mailMsg->set_Subject(L"subject");
mailMsg->set_HtmlBody(L"<h3>rtf example</h3><p>creating an <b><u>outlook message (msg)</u></b> file using Aspose.Email.</p>");
System::SharedPtr<MapiMessage> outlookMsg = MapiMessage::FromMailMessage(mailMsg);
outlookMsg->Save(dataDir + L"CreatingMSGFilesWithRTFBody_out.msg");

Guardando 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 soporta el guardado de mensajes de correo electrónico en estado de borrador configurando una bandera de mensaje. A continuación se muestra un código de ejemplo para guardar un mensaje de correo electrónico de Outlook (MSG) como borrador.

For complete examples and data files, please go to https://github.com/kashifiqb/Aspose.Email-for-C
// Change properties of an existing MSG file
System::String strExistingMsg = L"message.msg";
// Load the existing file in MailMessage and Change the properties
System::SharedPtr<MailMessage> msg = MailMessage::Load(dataDir + strExistingMsg, System::MakeObject<MsgLoadOptions>());
System::setter_add_wrap(msg.get(), &MailMessage::get_Subject, &MailMessage::set_Subject, L"NEW SUBJECT (updated by Aspose.Email)");
System::setter_add_wrap(msg.get(), &MailMessage::get_HtmlBody, &MailMessage::set_HtmlBody, L"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
System::SharedPtr<MapiMessage> mapiMsg = MapiMessage::FromMailMessage(msg);
mapiMsg->SetMessageFlags(Aspose::Email::Outlook::MapiMessageFlags::MSGFLAG_UNSENT);
mapiMsg->Save(dataDir + L"SavingMessageInDraftStatus_out.msg");

Implicaciones de la Compresión del Cuerpo

El método de compresión de cuerpo RTF puede ser utilizado para generar un MSG de tamaño menor. Sin embargo, esto resulta en una velocidad más lenta. Para crear mensajes con velocidad mejorada, establece la bandera en falso. Esta bandera, a su vez, tiene efecto en los PST creados: archivos MSG más pequeños resultan en un PST más pequeño, y archivos MSG grandes devuelven una creación de PST más lenta.

For complete examples and data files, please go to https://github.com/kashifiqb/Aspose.Email-for-C
System::SharedPtr<MailMessage> message = MailMessage::Load(fileName);
System::SharedPtr<MapiConversionOptions> options = System::MakeObject<MapiConversionOptions>();
options->set_UseBodyCompression(true);
System::SharedPtr<MapiMessage> ae_mapi = MapiMessage::FromMailMessage(message, options);