Hantera bilagor i Outlook MSG‑filer
Aspose.Email för C++ erbjuder ett rikt API för att komma åt, spara, ta bort och bädda in bilagor när du arbetar med Microsoft Outlook MSG‑filer. Bilagor hanteras via MapiMessage klass, med dess Attachments egenskap, som exponerar en MapiAttachmentCollection.
Spara bilagor från en MSG-fil
För att extrahera och spara bilagor från en MSG-fil:
- Läs in meddelandet med hjälp av MapiMessage::Load.
- Iterera igenom MapiAttachmentCollection.
- Spara varje bilaga med hjälp av MapiAttachment::Save() metod.
// 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());
}
}
Ta bort bilagor
Aspose.Email för C++ erbjuder två sätt att ta bort bilagor från MSG-filer:
- Anropa RemoveAttachments() metod
Den tar sökvägen till meddelandefilen som parameter. Den är implementerad som en offentlig statisk metod, så du behöver inte instansiera objektet. Denna statiska hjälpfunktion tar bort alla bilagor från en meddelandefil.
Följande kodsnutt visar hur man använder denna metod.
- Anropa DestoryAttachment() metod
Det fungerar snabbare eftersom det tar bort bilagor utan att fullständigt parsra MSG‑filen.
Lägg till MSG‑bilagor
MSG‑filer kan innehålla andra MSG‑filer antingen som standard- eller inbäddade bilagor. Använd den överlagrade Add metoder i MapiAttachmentCollection för att bädda in Outlook‑meddelanden.
Följande kodexempel demonstrerar hur man skapar ett nytt MAPI‑meddelande med specificerad avsändare, mottagare, ämne och innehåll, sedan bifogar en befintlig MSG-fil som ett inbäddat meddelande, och slutligen sparar det resulterande meddelandet med den inbäddade bilagan till en ny MSG-fil.
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");