Hantera meddelande‑bilagor
Hantera bilagor i Outlook
Skapa och spara Outlook‑meddelanden (MSG‑filer) förklarar hur man skapar och sparar meddelanden, samt hur man skapar MSG‑filer med bilagor. Denna artikel förklarar hur man hanterar Microsoft Outlook‑bilagor med Aspose.Email. Bilagor från en meddelandefil nås och sparas till disk med hjälp av MapiMessage klass Bilagor egenskapen. Den Bilagor egenskap är en samling av typen MapiAttachmentCollection klass.
Kontrollera bilagtyp (Inbäddad eller vanlig)
Inbäddade och vanliga bilagor har olika syften. Inbäddade bilagor integreras visuellt i e‑postmeddelandet och är vanligtvis bilder eller mediafiler. Vanliga bilagor är däremot separata filer som bifogas e‑posten och kan omfatta olika filtyper. The MapiAttachment.IsInline egenskap hos MapiAttachment klassen får ett värde som indikerar om bilagan är inline eller vanlig.
Följande kodexempel extraherar och visar information om varje bilaga i den inlästa MapiMessage, inklusive deras visningsnamn och om de är inbäddade bilagor eller inte.
var message = MapiMessage.Load(fileName);
foreach (var attach in message.Attachments)
{
Console.WriteLine($"{attach.DisplayName0} : {attach.IsInline)}");
}
Kontrollera bilagtyp (IsReference)
Den MapiAttachment klass innehåller IsReference egenskap som låter utvecklare identifiera referensbilagor i ett meddelande. Med följande kodexempel kan du kontrollera om en bilaga är en referensbilaga:
foreach (var attachment in msg.Attachments)
{
if (attachment.IsReference)
{
// Process reference attachment
}
}
Spara bilagor från MSG‑filer
För att spara bilagor från en MSG‑fil:
- Iterera igenom MapiAttachmentCollection samlingen och hämta de enskilda bilagorna.
- För att spara bilagorna, anropa MapiAttachment‑klassens Save()-metod.
Följande kodsnutt visar hur du sparar bilagor till den lokala disken.
Extrahera bilagor från RTF‑formaterade MSG‑filer
För meddelanden som är formaterade som RTF kan följande kod användas för att särskilja och extrahera bilagor som antingen är inbäddade eller visas som ikon i meddelandetexten. Följande kodsnutt visar hur du identifierar och extraherar en inbäddad bilaga från ett MSG‑format som 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);
}
}
}
Hämta inbäddade e‑postmeddelandebilagor
Inbäddade OLE‑bilagor visas även i MapiMessage klassen Attachment-samling. Följande kodexempel analyserar en meddelandefil för inbäddade meddelandebilagor och sparar den till disken. The MapiMessage klassen FromProperties() statiska metod kan skapa ett nytt meddelande från en inbäddad bilaga. Följande kodsnutt visar hur du får åtkomst till inbäddade e‑postmeddelandebilagor.
Ta bort bilagor
Aspose Outlook‑biblioteket ger funktionalitet för att ta bort bilagor från Microsoft Outlook‑meddelanden (.msg)-filer:
- Anropa RemoveAttachments()-metoden. Den tar sökvägen till meddelandefilen som parameter. Den är implementerad som en offentlig statisk metod, så du behöver inte instansiera objektet.
Följande kodsnutt visar hur du tar bort bilagor.
Du kan också anropa MapiMessage klassens statiska metod DestroyAttachment(). Det fungerar snabbare än RemoveAttachment(), eftersom RemoveAttachment()-metoden analyserar meddelandefilen.
Lägg till MSG‑bilagor
Ett Outlook‑meddelande kan innehålla andra Microsoft Outlook‑meddelanden som bilagor, antingen som vanliga eller inbäddade meddelanden. The MapiAttachmentCollection tillhandahåller överlagrade medlemmar av Add‑metoden för att skapa Outlook‑meddelanden med båda typerna av bilagor.
Try it out!
Lägg till eller ta bort e‑postbilagor med den kostnadsfria Aspose.Email Editor App.
Lägg till referensbilagor till MapiMessages
Den ReferenceAttachmentOptions klassen förenklar tillägget av referensbilagor genom att kapsla in alla nödvändiga egenskaper i ett enda objekt.
Parametrar för ReferenceAttachmentOptions:
- sharedLink: En fullständigt kvalificerad delad länk till bilagan som tillhandahålls av webbtjänsten som är värd för filen.
- url: Filens plats eller resurs‑URL.
- providerName: Namnet på leverantören av referensbilagan (t.ex. Google Drive, Dropbox).
- Exempel: Lägga till en referensbilaga med 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);
Bädda in meddelanden som bilagor
Följande kodsnutt visar hur du bäddar in en MSG‑fil som bilaga i ett meddelande.
Läs inbäddade meddelanden från bilagor
Följande kodsnutt visar hur du läser inbäddade meddelanden från bilagor.
Infoga och ersätta bilaga
Aspose.Email API ger möjlighet att infoga bilagor på ett specifikt index i föräldrameddelandet. Det ger även möjlighet att ersätta innehållet i en bilaga med en annan meddelandebilaga.
Try it out!
Kör ReplaceAttach enkelt app‑projekt och prova Aspose.Email‑funktionerna för att ersätta bilagor i praktiken.
Infoga bilagor på specifika platser
Aspose.Email‑API erbjuder möjlighet att infoga en MSG‑bilaga i ett överordnat MSG med MapiAttachmentCollection:s Insert‑metod Insert(int index, string name, MapiMessage msg). Följande kodsnutt visar hur du infogar en bilaga på en specifik plats.
Ersätt bilageinnehåll
Detta kan användas för att ersätta inbäddade bilagors innehåll med nya med hjälp av Replace‑metoden. Det kan dock inte användas för att infoga en bilaga med PR_ATTACH_NUM = 4 (t.ex.) i en samling med collection.Count = 2. Följande kodsnutt visar hur du ersätter bilagors innehåll.
Byt namn på bilagor i MapiMessage
Det är möjligt att redigera DisplayName‑egenskapens värde i MapiMessage‑bilagor.
var msg = MapiMessage.Load(fileName);
msg.Attachments[0].DisplayName = "New display name 1";
msg.Attachments[1].DisplayName = "New display name 2";
Spara bilagor från digitalt signerade meddelanden
Aspose.Email API ger möjlighet att hämta eller sätta ett värde som indikerar om ett clearsignerat meddelande ska avkodas.