Gestionar archivos adjuntos en archivos Outlook MSG

Aspose.Email for C++ proporciona una API completa para acceder, guardar, eliminar e incrustar archivos adjuntos al trabajar con archivos MSG de Microsoft Outlook. Los archivos adjuntos se gestionan a través del MapiMessage clase, usando su Attachments propiedad, que expone un MapiAttachmentCollection.

Guardar archivos adjuntos de un archivo MSG

Para extraer y guardar archivos adjuntos de un archivo MSG:

  1. Cargue el mensaje usando MapiMessage::Load.
  2. Iterar a través de MapiAttachmentCollection.
  3. Guarda cada archivo adjunto usando el MapiAttachment::Save() método.
// Create an instance of MapiMessage from file
System::SharedPtr<MapiMessage> message = MapiMessage::Load(fileName);
    
// Iterate through the attachments collection
    
{
    auto attachment_enumerator = (message->get_Attachments())->GetEnumerator();
    decltype(attachment_enumerator->get_Current()) attachment;
    while (attachment_enumerator->MoveNext() && (attachment = attachment_enumerator->get_Current(), true))
    {
        // Save the individual attachment
        attachment->Save(dataDir + attachment->get_FileName());
    }
}

Eliminar Adjuntos

Aspose.Email for C++ ofrece dos formas de eliminar archivos adjuntos de archivos MSG:

Recibe la ruta del archivo de mensaje como parámetro. Está implementado como un método estático público, por lo que no necesitas instanciar el objeto. Este método auxiliar estático elimina todos los archivos adjuntos de un archivo de mensaje.

El siguiente fragmento de código muestra cómo usar este método.

Funciona más rápido porque elimina los archivos adjuntos sin analizar completamente el archivo MSG.

Agregar Adjuntos MSG

Los archivos MSG pueden contener otros archivos MSG ya sea como adjuntos estándar o incrustados. Usa el sobrecargado Add métodos en MapiAttachmentCollection para incrustar mensajes de Outlook.

El siguiente ejemplo de código muestra cómo crear un nuevo mensaje MAPI con remitente, destinatario, asunto y cuerpo especificados, luego adjuntar un archivo MSG existente como mensaje incrustado, y finalmente guardar el mensaje resultante con el adjunto incrustado en un nuevo archivo MSG.

System::SharedPtr<MapiMessage> message = System::MakeObject<MapiMessage>(L"from@test.com", L"to@test.com", L"Subj", L"This is a message body");
System::SharedPtr<MapiMessage> attachMsg = MapiMessage::Load(L"Message.msg");
message->get_Attachments()->Add(L"Weekly report.msg", attachMsg);
message->Save(dataDir + L"WithEmbeddedMsg_out.msg");