Warum Bilder aus E-Mails extrahieren?

E-Mails (MSG, EML) enthalten oft wichtige visuelle Elemente wie von Kunden eingereichte Bilder, Marketingbanner, integrierte HTML bilder und Fotoanhänge. Die Automatisierung der Extraktion ermöglicht es Ihnen:

  • Speichern Sie Fotos aus E-Mails ohne manuellen Aufwand.
  • E-Mails in großen Mengen verarbeiten
  • Laden Sie Inline und CID-eingebettete Bilder herunter
  • Verbessern Sie Workflows für CRM, Support-Tickets, Automatisierung und Archivierung.
  • Bereiten Sie visuelle Daten zur Analyse und Verarbeitung vor.

Dieser Artikel beantwortet häufige Fragen wie z.B. wie man ein Foto aus einer E-Mail speichert, wie man E-Mail-Fotos speichert und wie man ein Bild aus einer E-Mail mit der .NET REST API herunterlädt.

Email Image Extraction API

Mit GroupDocs.Parser Cloud SDK für .NET können Sie EML und MSG Dateien analysieren und jede Art von Bild extrahieren, die sie enthalten, einschließlich:

  • Inline eingebettete Bilder (Base64 / CID)
  • CID-referenzierte HTML bilder
  • Angefügte Fotos (JPG, PNG, GIF, BMP, TIFF)

Unterstützte Formate:

  • EML — Standard-RFC822-E-Mail Dateien.
  • MSG — Microsoft Outlook-E-Mail-Nachrichten.

Voraussetzungen

  • Ein GroupDocs Cloud-Konto (Client-ID und Client-Secret).
  • .NET 6.0+ installiert.
  • Visual Studio oder kompatible IDE.
  • NuGet-Paket: GroupDocs.Parser-Cloud

Installieren über NuGet

dotnet add package GroupDocs.Parser-Cloud --version 25.7.0

Bilder aus E-Mails mit C# .NET extrahieren

Unten finden Sie ein vollständiges C#-Beispiel, das zeigt, wie man eine E-Mail-Datei (EML oder MSG) hochlädt, die Bilder-API aufruft, um Bilder aus der E-Mail zu extrahieren, und die resultierenden Fotos lokal herunterlädt. Dies löst Anwendungsfälle wie das Speichern von Bildern aus E-Mails und den Download von Fotos aus E-Mails.

Schritt 1 — API initialisieren:

var config = new Configuration("YOUR_CLIENT_ID", "YOUR_CLIENT_SECRET");
var parserApi = new ParserApi(config);

Schritt 2 — ZIP-Datei-Informationen und Optionen festlegen:

var fileInfo = new FileInfo { FilePath = "source.eml" };
var options = new ImagesOptions { FileInfo = fileInfo };
var request = new ImagesRequest(options);

Schritt 3 — Bilder extrahieren:

var imagesRequest = new ImagesRequest(options);
var imagesResponse = parserApi.Images(imagesRequest);
// 1. API-Client konfigurieren
var config = new Configuration
{
    ClientId = "YOUR_CLIENT_ID",
    ClientSecret = "YOUR_CLIENT_SECRET"
};

var parserApi = new ParserApi(config);
var fileApi = new FileApi(config);

// Lokale und Cloud-Pfade
var localEmailPath = "/Users/you/Downloads/message.eml"; // macOS example
var remoteEmailPath = "inbox/message.eml";
var outputFolder = "extracted-email-images"; // cloud output folder
var localOutputDir = "/Users/you/Downloads/extracted-email-images";

// 2. Lade die E-Mail-Datei in den Cloud-Speicher hoch
using (var fs = File.OpenRead(localEmailPath))
{
    var uploadRequest = new UploadFileRequest(path: remoteEmailPath, fileContent: fs);
    fileApi.UploadFile(uploadRequest);
    Console.WriteLine($"Uploaded {remoteEmailPath} to cloud storage.");
}

// 3. Bereiten Sie die Anfrage zur Extraktion von Bildern vor
var fileInfo = new FileInfo { FilePath = remoteEmailPath, StorageName = "internal" };
var options = new ImagesOptions { FileInfo = fileInfo, OutputPath = outputFolder };
var imagesRequest = new ImagesRequest(options);

// 4. Rufen Sie die Bilder-API auf, um Inline-/angehängte Bilder zu extrahieren.
var imagesResponse = parserApi.Images(imagesRequest);

if (imagesResponse.Images == null || imagesResponse.Images.Count == 0)
{
    Console.WriteLine("No images found inside the email.");
    return;
}

Console.WriteLine($"Found {imagesResponse.Images.Count} image(s) inside the email:");
foreach (var img in imagesResponse.Images)
{
    Console.WriteLine($"  - {img.Path} ({img.Size} bytes) [{img.MediaType}]");
}

// 5. Geladene extrahierte Bilder aus dem Cloud-Speicher in den lokalen Ordner herunterladen (macOS-sicher)
Directory.CreateDirectory(localOutputDir);

foreach (var img in imagesResponse.Images)
{
    // Normalisieren Sie den zurückgegebenen Pfad und den Ausgabeverzeichnis, um Duplikate zu vermeiden.
    var returnedPath = (img.Path ?? string.Empty).Replace("\\", "/").Trim('/');
    var normalizedOutputFolder = (outputFolder ?? string.Empty).Replace("\\", "/").Trim('/');

    string cloudImagePath;
    if (!string.IsNullOrEmpty(normalizedOutputFolder) &&
    (returnedPath.StartsWith(normalizedOutputFolder + "/") || returnedPath == normalizedOutputFolder))
    {
        cloudImagePath = returnedPath;
    }
    else if (!string.IsNullOrEmpty(normalizedOutputFolder))
    {
        cloudImagePath = $"{normalizedOutputFolder}/{returnedPath}".Trim('/');
    }
    else
    {
        cloudImagePath = returnedPath;
    }

    Console.WriteLine($"Downloading from cloud path: {cloudImagePath}");

    var downloadRequest = new DownloadFileRequest(path: cloudImagePath);
    var responseStream = fileApi.DownloadFile(downloadRequest);

    var localFileName = Path.GetFileName(returnedPath);
    var localFilePath = Path.Combine(localOutputDir, localFileName);

    using (var fsLocal = File.Create(localFilePath))
    {
        responseStream.CopyTo(fsLocal);
    }

    Console.WriteLine($"Downloaded: {localFilePath}");
}

Console.WriteLine("Email image extraction completed.");

Notizen zu macOS und Cloud-Pfaden

  • Verwenden Sie Path.Combine nicht, um Schlüssel für den Cloud-Speicher zu erstellen. Verwenden Sie Schrägstriche (/) als Trennzeichen, wenn Sie S3-/Objektspeicherschlüssel erstellen.
  • Verwenden Sie Path.Combine nur für lokale Dateisystempfade (gespeicherte heruntergeladene Dateien auf macOS).
  • Der obige Code normalisiert img.Path, das von der API zurückgegeben wird, und vermeidet doppelte Ordnersegmente wie extracted-email-images/extracted-email-images/....

Extract Email Images using cURL

Alternativ können Sie, wenn Sie CLI bevorzugen, die REST-API direkt aufrufen.

Schritt 1 — Zugriffstoken generieren Der erste Schritt in diesem Ansatz besteht darin, ein JWT-Zugriffstoken basierend auf den Client-Anmeldeinformationen zu generieren.

curl -v -X POST "https://api.groupdocs.cloud/connect/token" \
-d "grant_type=client_credentials&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET" \
-H "Content-Type: application/x-www-form-urlencoded"

*Step 2 — Extract Images from ZIP

curl -v -X POST "https://api.groupdocs.cloud/v1.0/parser/images" \
-H  "accept: application/json" \
-H  "authorization: Bearer {ACCESS_TOKEN}" \
-H  "Content-Type: application/json" \
-d "{ "FileInfo": { "FilePath": "inbox/message.eml", "StorageName": "internal" }, "OutputPath": "extracted-email-images"}"

Die Antwort gibt ein Array von extrahierten Bilddatensätzen mit ihren Cloud-Pfaden zurück; laden Sie sie mithilfe der File-API oder signierter URLs herunter.

Versuchen Sie den Online Email Image Extractor

Um die Fähigkeiten der REST API zu testen, ohne eine einzige Codezeile zu schreiben, können Sie unser kostenloses Online-Tool Email Image Extractor in Betracht ziehen. Es basiert auf der GroupDocs.Parser Cloud API und ermöglicht Ihnen das Speichern von E-Mail-Fotos.

extract email images

Fehlerbehebung & Debugging

  • Der angegebene Schlüssel existiert nicht — überprüfen Sie die genauen img.Path-Werte, die von der API zurückgegeben werden. Fügen Sie OutputPath nicht hinzu, wenn die zurückgegebenen Pfade es bereits enthalten.
  • Keine Bilder gefunden – stellen Sie sicher, dass die E-Mail tatsächlich unterstützte Bildtypen enthält, und überprüfen Sie verschachtelte MIME-Teile.
  • Große E-Mails — Bei sehr großen oder vielen Bildern bevorzugen Sie die Cloud-Speicher-Ausgabe und Batch-Downloads.
  • Berechtigungen — überprüfen Sie, ob die API-Anmeldeinformationen und StorageName (z. B. internal) korrekt sind.

Schlussfolgerung

Dieser Artikel zeigte, wie man Bilder aus E-Mail Dateien (.eml und .msg) extrahiert, wie man Fotos aus einer E-Mail programmgesteuert speichert und wie man inline und angehängte Bilder mit dem GroupDocs.Parser Cloud SDK für .NET herunterlädt.

Verwandte Artikel

Wir empfehlen dringend, die folgenden Artikel zu besuchen, um mehr über Folgendes zu erfahren:

Häufig gestellte Fragen (FAQs)

  1. Kann ich Inline-Fotos aus E-Mails extrahieren? Ja, die API extrahiert automatisch Inline und eingebettete Bilder.

  2. Funktioniert das mit .msg (Outlook) Dateien? Ja — MSG und EML-Formate werden unterstützt.

  3. Kann ich nur angehängte Fotos extrahieren? Ja, die Filteroptionen ermöglichen eine Extraktion nur für Attachments.

  4. Welche Bildformate werden unterstützt? JPG, PNG, BMP, GIF, TIFF und andere gängige Bildtypen.

  5. Gibt es eine kostenlose Testphase? Ja. Sie können ein kostenloses Konto erstellen und 150 monatliche API-Aufrufe erhalten.