Керування вкладеннями у Outlook MSG‑файлах

Aspose.Email for C++ надає багатий API для доступу, збереження, видалення та вбудовування вкладень під час роботи з Microsoft Outlook MSG‑файлами. Вкладення обробляються через MapiMessage клас, використовуючи його Attachments властивість, яка надає MapiAttachmentCollection.

Зберегти вкладення з MSG‑файлу

Щоб витягти та зберегти вкладення з MSG‑файлу:

  1. Завантажте повідомлення, використовуючи MapiMessage::Load.
  2. Ітеруйте через MapiAttachmentCollection.
  3. Зберегти кожне вкладення за допомогою MapiAttachment::Save() метод.
// 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());
    }
}

Видалити прикріплення

Aspose.Email for C++ пропонує два способи видалення вкладень з MSG‑файлів:

Метод приймає шлях до файлу повідомлення як параметр. Він реалізований як публічний статичний метод, тому не потрібно створювати об’єкт. Цей статичний допоміжний метод видаляє всі вкладення з файлу повідомлення.

Наведений фрагмент коду показує, як використати цей метод.

Він працює швидше, оскільки видаляє вкладення без повного розбору MSG‑файлу.

Додати MSG прикріплення

MSG‑файли можуть містити інші MSG‑файли як стандартні, так і вбудовані вкладення. Використовуйте перевантажений Add методи в MapiAttachmentCollection для вбудовування Outlook‑повідомлень.

Наведений приклад коду демонструє, як створити нове MAPI‑повідомлення з вказаними відправником, одержувачем, темою та тілом, потім приєднати існуючий MSG‑файл як вбудоване повідомлення та, нарешті, зберегти отримане повідомлення з вбудованим вкладенням у новий 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");