Zarządzanie załącznikami w plikach Outlook MSG

Aspose.Email for C++ zapewnia rozbudowane API do uzyskiwania dostępu, zapisywania, usuwania i osadzania załączników przy pracy z plikami Microsoft Outlook MSG. Załączniki są obsługiwane poprzez MapiMessage klasę, używając jej Attachments właściwość, która udostępnia MapiAttachmentCollection.

Zapisz załączniki z pliku MSG

Aby wyodrębnić i zapisać załączniki z pliku MSG:

  1. Załaduj wiadomość przy użyciu MapiMessage::Load.
  2. Iteruj przez MapiAttachmentCollection.
  3. Zapisz każdy załącznik przy użyciu MapiAttachment::Save() metoda.
// 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());
    }
}

Usuń załączniki

Aspose.Email for C++ oferuje dwa sposoby usuwania załączników z plików MSG:

Przyjmuje ścieżkę do pliku wiadomości jako parametr. Jest zaimplementowana jako publiczna metoda statyczna, więc nie trzeba tworzyć instancji obiektu. Ta statyczna metoda pomocnicza usuwa wszystkie załączniki z pliku wiadomości.

Poniższy fragment kodu pokazuje, jak używać tej metody.

Działa szybciej, ponieważ usuwa załączniki bez pełnego parsowania pliku MSG.

Dodaj załączniki MSG

Pliki MSG mogą zawierać inne pliki MSG jako standardowe lub osadzone załączniki. Użyj przeciążonej Add metody w MapiAttachmentCollection do osadzenia wiadomości Outlook.

Poniższy przykład kodu pokazuje, jak utworzyć nową wiadomość MAPI z określonym nadawcą, odbiorcą, tematem i treścią, następnie dołączyć istniejący plik MSG jako załącznik osadzony, a w końcu zapisać powstałą wiadomość z osadzonym załącznikiem do nowego pliku 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");