Beheren van berichtbijlagen

Behandelen van bijlagen in Outlook

Outlook‑berichten (MSG) maken en opslaan legt uit hoe berichten te maken en op te slaan, en hoe MSG‑bestanden met bijlagen te maken. Dit artikel legt uit hoe Microsoft Outlook‑bijlagen te beheren met Aspose.Email. Bijlagen uit een berichtbestand worden benaderd en opgeslagen op schijf met behulp van de MapiMessage klasse Bijlagen eigenschap. De Bijlagen eigenschap is een collectie van het type MapiAttachmentCollection klasse.

Controleer bijlagetype (Inline of regulier)

Inline‑ en reguliere bijlagen dienen verschillende doelen. Inline‑bijlagen worden visueel geïntegreerd in het e‑mailbericht en zijn doorgaans afbeeldingen of mediabestanden. Terwijl reguliere bijlagen afzonderlijke bestanden zijn die aan de e‑mail worden toegevoegd en diverse bestandstypen kunnen bevatten. De MapiAttachment.IsInline eigenschap van de MapiAttachment klasse krijgt een waarde die aangeeft of de bijlage inline of regulier is.

Het volgende codevoorbeeld haalt informatie over elke bijlage op in de geladen MapiMessage en geeft deze weer, inclusief hun weergavenamen en of ze inline‑bijlagen zijn of niet.

var message = MapiMessage.Load(fileName);

foreach (var attach in message.Attachments)
{
    Console.WriteLine($"{attach.DisplayName0} : {attach.IsInline)}");
}

Controleer bijlagetype (IsReference)

De MapiAttachment klasse bevat de IsReference eigenschap die ontwikkelaars in staat stelt referentielbijlagen in een bericht te identificeren. Met het volgende codevoorbeeld kun je controleren of een bijlage een referentiebijlage is:

foreach (var attachment in msg.Attachments)
{
    if (attachment.IsReference)
    {
        // Process reference attachment
    }
}

Bijlagen opslaan uit MSG‑bestanden

Om bijlagen uit een MSG‑bestand op te slaan:

  1. Itereer door de MapiAttachmentCollection collectie aan en haal de individuele bijlagen op.
  2. Om de bijlagen op te slaan, roep de Save()‑methode van de MapiAttachment‑klasse aan.

De volgende codefragment toont hoe je bijlagen opslaat op de lokale schijf.

Extraheer bijlagen uit RTF‑geformatteerde MSG‑bestanden

Voor berichten die zijn opgemaakt als RTF kan de volgende code worden gebruikt om bijlagen die Inline zijn of als pictogram in de berichtinhoud verschijnen te onderscheiden en te extraheren. Het volgende codefragment toont hoe je een ingebedde bijlage identificeert en extraheert uit een MSG die is opgemaakt als 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);
        }
    }
}

Haalt geneste mailbericht‑bijlagen op

Ingebedde OLE‑bijlagen verschijnen ook in de MapiMessage klasse Attachment‑collectie. Het volgende code‑voorbeeld parseert een berichtbestand op ingebedde berichtbijlagen en slaat het op de schijf op. De MapiMessage klasse FromProperties() statische methode kan een nieuw bericht maken vanuit een ingebedde bijlage. Het volgende codefragment toont hoe je geneste mailbericht‑bijlagen krijgt.

Bijlagen verwijderen

De Aspose Outlook‑bibliotheek biedt de functionaliteit om bijlagen te verwijderen uit Microsoft Outlook‑berichten (.msg)-bestanden:

  • Roep de RemoveAttachments()‑methode aan. Deze neemt het pad van het berichtbestand als parameter. De methode is geïmplementeerd als een publieke statische methode, dus u hoeft het object niet te instantieren.

Het volgende codefragment toont hoe u bijlagen verwijdert.

Je kunt ook de MapiMessage klasse statische methode DestroyAttachment() Werkt sneller dan RemoveAttachment(), omdat de RemoveAttachment()-methode het berichtbestand parseert.

MSG‑bijlagen toevoegen

Een Outlook‑bericht kan andere Microsoft Outlook‑berichten als bijlagen bevatten, zowel als reguliere als ingebedde berichten. De MapiAttachmentCollection biedt overladen leden van de Add‑methode om Outlook‑berichten te maken met beide soorten bijlagen.

Referentiebijlagen toevoegen aan MapiMessages

De ReferenceAttachmentOptions klasse vereenvoudigt het toevoegen van referentiebijlagen door alle benodigde eigenschappen in één object te encapsuleren.

Parameters van ReferenceAttachmentOptions:

  • sharedLink: Een volledig gekwalificeerde gedeelde link naar de bijlage, geleverd door de webservice die het bestand host.
  • url: De bestandslocatie of resource‑URL.
  • providerName: De naam van de referentie‑bijlageprovider (bijv. Google Drive, Dropbox).
  • Voorbeeld: Een referentiebijlage toevoegen met 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);

Berichten insluiten als bijlagen

Het volgende codefragment toont hoe je een MSG‑bestandbijlage in een bericht embedt.

Ingesloten berichten lezen uit bijlagen

De onderstaande code‑snippet laat zien hoe je ingesloten berichten uit bijlagen leest.

Invoegen en vervangen van bijlage

Aspose.Email API biedt de mogelijkheid om bijlagen op een specifieke index in het bovenliggende bericht in te voegen. Het biedt ook de mogelijkheid om de inhoud van een bijlage te vervangen door een andere berichtbijlage.

Bijlagen invoegen op specifieke locaties

Aspose.Email‑API biedt de mogelijkheid om een MSG‑bijlage in een bovenliggend MSG in te voegen met behulp van de Insert‑methode van MapiAttachmentCollection (MapiAttachmentCollection Insert(int index, string name, MapiMessage msg)). Het volgende codefragment toont hoe je een bijlage op een specifieke locatie invoegt.

Inhoud van bijlage vervangen

Dit kan worden gebruikt om de inhoud van ingebedde bijlagen te vervangen door nieuwe via de Replace‑methode. Het kan echter niet worden gebruikt om een bijlage met PR_ATTACH_NUM = 4 (bijvoorbeeld) in een collectie met collection.Count = 2 in te voegen. Het volgende codefragment toont hoe u bijlage‑inhoud vervangt.

Hernoem bijlagen in MapiMessage

Het is mogelijk de DisplayName‑eigenschap van MapiMessage‑bijlagen te bewerken.

var msg = MapiMessage.Load(fileName);
msg.Attachments[0].DisplayName = "New display name 1";
msg.Attachments[1].DisplayName = "New display name 2";

Bewaar bijlagen van digitaal ondertekende berichten

Aspose.Email API biedt de mogelijkheid om een waarde op te halen of in te stellen die aangeeft of een clear‑signed bericht zal worden gedecodeerd.