Správa příloh zpráv
Manipulace s přílohami v Outlooku
Vytváření a ukládání Outlook zpráv (MSG) souborů vysvětluje, jak vytvořit a uložit zprávy a jak vytvořit soubory MSG s přílohami. Tento článek popisuje, jak spravovat přílohy Microsoft Outlook pomocí Aspose.Email. Přílohy ze souboru zprávy jsou přístupné a ukládají se na disk pomocí MapiMessage třída Přílohy vlastnost. Ta Přílohy vlastnost je kolekce typu MapiAttachmentCollection třída.
Zkontrolovat typ přílohy (Inline nebo běžná)
Vložené a běžné přílohy slouží různým účelům. Vložené přílohy jsou vizuálně integrovány do e‑mailové zprávy a jsou typicky obrázky nebo mediální soubory. Naopak běžné přílohy jsou samostatné soubory připojené k e‑mailu a mohou zahrnovat různé typy souborů. MapiAttachment.IsInline vlastnost třídy MapiAttachment Zkontrolovat, zda je příloha inline nebo běžná
Následující ukázka kódu extrahuje a zobrazí informace o každé příloze načteného MapiMessage, včetně jejich zobrazovaných názvů a toho, zda jsou vložené (inline) nebo ne.
var message = MapiMessage.Load(fileName);
foreach (var attach in message.Attachments)
{
Console.WriteLine($"{attach.DisplayName0} : {attach.IsInline)}");
}
Zkontrolovat typ přílohy (IsReference)
The MapiAttachment třída zahrnuje IsReference vlastnost, která umožňuje vývojářům identifikovat referenční přílohy ve zprávě. V následujícím ukázkovém kódu můžete zkontrolovat, zda je příloha referenční přílohou:
foreach (var attachment in msg.Attachments)
{
if (attachment.IsReference)
{
// Process reference attachment
}
}
Uložit přílohy ze souborů MSG
Pro uložení příloh ze souboru MSG:
- Iterujte přes MapiAttachmentCollection kolekci a získejte jednotlivé přílohy.
- Pro uložení příloh zavolejte metodu Save() třídy MapiAttachment.
Následující úryvek kódu ukazuje, jak uložit přílohy na místní disk.
Extrahovat přílohy z MSG souborů formátovaných jako RTF
Pro zprávy formátované jako RTF lze následující kód použít k rozlišení a extrakci příloh, které jsou buď Inline, nebo se zobrazují jako ikona v těle zprávy. Následující úryvek kódu ukazuje, jak identifikovat a extrahovat vloženou přílohu z MSG formátovaného jako RTF.
var eml = MapiMessage.Load("MSG file with RTF Formatting.msg");
foreach (var attachment in eml.Attachments)
{
if (IsAttachmentInline(attachment))
{
try
{
SaveAttachment(attachment, Data.Out/new Guid().ToString());
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
static bool IsAttachmentInline(MapiAttachment attachment)
{
foreach (var property in attachment.ObjectData.Properties.Values)
{
if (property.Name == "\x0003ObjInfo")
{
var odtPersist1 = BitConverter.ToUInt16(property.Data, 0);
return (odtPersist1 & (1 << (7 - 1))) == 0;
}
}
return false;
}
static void SaveAttachment(MapiAttachment attachment, string fileName)
{
foreach (var property in attachment.ObjectData.Properties.Values)
{
if (property.Name == "Package")
{
using var fs = new FileStream(fileName, FileMode.Create, FileAccess.Write);
fs.Write(property.Data, 0, property.Data.Length);
}
}
}
Získat vnořené přílohy e‑mailových zpráv
Vložené OLE přílohy se také objevují v MapiMessage třída kolekce Attachment. Následující příklad kódu parsuje soubor zprávy pro vložené přílohy zpráv a ukládá jej na disk. The MapiMessage statická metoda třídy FromProperties() může vytvořit novou zprávu z vložené přílohy. Následující úryvek kódu ukazuje, jak získat vnořené přílohy e‑mailových zpráv.
Odstranit přílohy
Knihovna Aspose Outlook poskytuje funkci pro odebrání příloh ze souborů Microsoft Outlook Message (.msg):
- Zavolejte metodu RemoveAttachments(). Přijímá jako parametr cestu k souboru se zprávou. Je implementována jako veřejná statická metoda, takže není třeba vytvářet instanci objektu.
Následující úryvek kódu vám ukazuje, jak odstraňovat přílohy.
Můžete také zavolat MapiMessage statická metoda třídy DestroyAttachment(). Funguje rychleji než RemoveAttachment(), protože metoda RemoveAttachment() parsuje soubor zprávy.
Přidat MSG přílohy
Outlook zpráva může obsahovat jiné Microsoft Outlook zprávy v přílohách buď jako běžné, nebo jako vložené zprávy. The MapiAttachmentCollection poskytuje přetížené členy metody Add pro vytvoření Outlook zpráv s oběma typy příloh.
Vyzkoušejte to!
Přidávejte nebo odstraňujte e‑mailové přílohy pomocí bezplatného Aspose.Email Editor App.
Přidat referenční přílohy do MapiMessages
The ReferenceAttachmentOptions třída zjednodušuje přidávání referenčních příloh tím, že zapouzdří všechny potřebné vlastnosti do jediného objektu.
Parametry ReferenceAttachmentOptions:
- sharedLink: Plně kvalifikovaný sdílený odkaz na přílohu poskytovaný webovou službou hostující soubor.
- url: Umístění souboru nebo URL zdroje.
- providerName: Název poskytovatele referenční přílohy (např. Google Drive, Dropbox).
- Příklad: Přidání referenční přílohy pomocí ReferenceAttachmentOptions
var options = new ReferenceAttachmentOptions(
"https://drive.google.com/file/d/1HJ-M3F2qq1oRrTZ2GZhUdErJNy2CT3DF/",
"https://drive.google.com/drive/my-drive",
"GoogleDrive");
// Add reference attachment
msg.Attachments.Add("Document.pdf", options);
Vložit zprávy jako přílohy
Následující úryvek kódu ukazuje, jak vložit přílohu MSG souboru do zprávy.
Číst vložené zprávy z příloh
Následující úryvek kódu ukazuje, jak číst vložené zprávy z příloh.
Vkládání a nahrazování příloh
metoda. Nicméně nelze použít k vložení přílohy s PR_ATTACH_NUM = 4 (například) do kolekce s collection.Count = 2.
Vyzkoušejte to!
Spusťte ReplaceAttach jednoduchý aplikační projekt a vyzkoušejte možnosti Aspose.Email pro nahrazování příloh v praxi.
Vložit přílohy na konkrétní místa
API Aspose.Email poskytuje možnost vložit MSG přílohu do nadřazeného MSG pomocí metody Insert kolekce MapiAttachmentCollection Insert(int index, string name, MapiMessage msg). Následující úryvek kódu ukazuje, jak vložit přílohu na konkrétní místo.
Nahradit obsah přílohy
Toto lze použít k nahrazení obsahu vložené přílohy novým pomocí metody Replace. Nemůže však být použito k vložení přílohy s PR_ATTACH_NUM = 4 (například) do kolekce, kde collection.Count = 2. Následující úryvek kódu vám ukazuje, jak nahradit obsah přílohy.
Přejmenovat přílohy v MapiMessage
Je možné upravit hodnotu vlastnosti DisplayName v přílohách MapiMessage.
var msg = MapiMessage.Load(fileName);
msg.Attachments[0].DisplayName = "New display name 1";
msg.Attachments[1].DisplayName = "New display name 2";
Uložit přílohy z digitálně podepsaných zpráv
Následující ukázka kódu načte e‑mailovou zprávu ze souboru a poté získá informace o přílohách, konkrétně vytiskne zobrazovaný název každé přílohy a zda je v rámci zprávy inline nebo ne: