Gestisci gli allegati nei file Outlook MSG

Aspose.Email per C++ fornisce un’API completa per accedere, salvare, rimuovere e incorporare allegati quando si lavora con file Microsoft Outlook MSG. Gli allegati sono gestiti attraverso il MapiMessage classe, usando il suo Attachments proprietà, che espone un MapiAttachmentCollection.

Salva gli allegati da un file MSG

Per estrarre e salvare gli allegati da un file MSG:

  1. Carica il messaggio usando MapiMessage::Load.
  2. Iterare attraverso il MapiAttachmentCollection.
  3. Salva ciascun allegato usando il MapiAttachment::Save() metodo.
// 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());
    }
}

Rimuovere allegati

Aspose.Email per C++ offre due modi per rimuovere gli allegati dai file MSG:

Accetta il percorso del file del messaggio come parametro. È implementato come metodo statico pubblico, quindi non è necessario istanziare l’oggetto. Questo metodo helper statico rimuove tutti gli allegati da un file messaggio.

Il seguente frammento di codice mostra come usare questo metodo.

Funziona più velocemente perché rimuove gli allegati senza analizzare completamente il file MSG.

Aggiungere allegati MSG

I file MSG possono contenere altri file MSG sia come allegati standard che incorporati. Usa la sovraccaricata Add metodi in MapiAttachmentCollection per incorporare messaggi Outlook.

Il seguente esempio di codice mostra come creare un nuovo messaggio MAPI con mittente, destinatario, oggetto e corpo specificati, poi allegare un file MSG esistente come messaggio incorporato, e infine salvare il messaggio risultante con l’allegato incorporato in un nuovo file 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");