All posts
|Also available in:EN

E-Mail-Anhänge automatisch verarbeiten

.eml- und .msg-Dateien mit der MaraDocs API verarbeiten. E-Mail-Anhänge extrahieren, validieren und als Bilder oder PDFs weiterverarbeiten. Rekursive Unterstützung für E-Mails in E-Mails.

Martin Kurtz
APIE-MailDokumentenverarbeitungEntwickler
E-Mail-Anhänge automatisch verarbeiten

Eingehende E-Mails enthalten häufig Dokumente als Anhänge – Bilder, PDFs, manchmal verschachtelte .eml- oder .msg-Dateien. In unserer Kanzlei konnte eine einzelne Mandanten-E-Mail ein Dutzend Fotos eines Unfallberichts, ein PDF-Gutachten und eine weitergeleitete E-Mail mit eigenen Anhängen enthalten. Eine E-Mail-Anhang-Verarbeitungs-API, die jeden Anhang extrahiert, validiert und in die richtige Pipeline leitet, würde stundenlange manuelle Arbeit einsparen.

Bilder müssen zur Dokumentextraktion oder OCR, PDFs zum Zusammenführen oder Komprimieren weitergeleitet werden – und verschachtelte E-Mails müssen rekursiv verarbeitet werden.

Warum eine eigene E-Mail-Anhang-Verarbeitungslösung Wochen dauert

Wer das selbst aufbauen möchte, stellt schnell fest, dass das Parsen von .eml und .msg mail-parser, extract-msg oder Ähnliches erfordert. Dann müssen MIME dekodiert, verschachtelte Nachrichten verarbeitet, Binärdaten extrahiert, Formate erkannt (magika, Dateisignaturen), auf Viren geprüft und nach Bild-/PDF-Logik verzweigt werden. Jeder Schritt birgt eigene Fehlerquellen: fehlerhafte Header, Kodierungen und verschachtelte E-Mails mit eigenen Anhängen. Eine robuste E-Mail-Anhang-Verarbeitungs-API intern aufzubauen dauert Wochen.

Wie die MaraDocs E-Mail-Anhang-Verarbeitungs-API das in Minuten löst

Die MaraDocs API validiert .eml- und .msg-Dateien in einem einzigen Aufruf. Man erhält strukturierte Anhang-Handles – jeweils mit Typinformation. Von dort aus kann nach Bild- oder PDF-Operationen verzweigt werden: nach Typ validieren, dann Dokumentextraktion, OCR, Komposition oder Komprimierung anwenden. Die API unterstützt rekursive Verarbeitung von E-Mails, die innerhalb von E-Mails angehängt sind.

Workflow zur E-Mail-Anhang-Verarbeitung: Hochladen, Validieren, Extrahieren, Weiterleiten

E-Mail-Datei hochladen, email.validate aufrufen. Die Antwort enthält Anhang-Handles – jeweils mit Inhaltstyp und Metadaten. Für jeden Anhang den Typ prüfen (Bild, PDF oder verschachtelte E-Mail). Den Anhang mit img.validate oder pdf.validate validieren, dann in die Pipeline verketten: flow.ocrImg für Bilder, pdf.compose zum Zusammenführen von PDFs, pdf.optimize zur Komprimierung. Verschachtelte E-Mails können erneut validiert werden, um deren Anhänge rekursiv zu extrahieren. Die gesamte Pipeline läuft serverseitig; Handles werden zwischen den Schritten übergeben, ohne herunterzuladen und erneut hochzuladen.

Get your API key in under a minute

Register for a free account and get your API key in under a minute. Of course we'll provide you with some developer credits.

Try MaraDocs API now →

Was MaraDocs unterscheidet: Workspaces, Webview und deutsches Datenschutzrecht

Die meisten Dokumenten-APIs zwingen dazu, jeden Anhang herunterzuladen, anderswo erneut hochzuladen und Identitäten über mehrere Schritte hinweg zu verfolgen. Bei MaraDocs leben alle Dateien – die E-Mail und ihre Anhänge – im selben Workspace. E-Mail validieren, Anhang-Handles iterieren und an img/pdf/flow-Endpunkte übergeben. Handles fließen; Daten bleiben serverseitig. Keine Download-Hochlade-Zyklen für jeden Anhang.

Wenn eine verschachtelte E-Mail eine unerwartete Struktur aufweist oder ein Anhang manuell geprüft werden muss, kann app.maradocs.io mit dem Workspace-Secret geöffnet werden, um Dateien zu inspizieren und umzuordnen. Nutzer erhalten volle manuelle Kontrolle, wenn die Automatisierung an ihre Grenzen stößt.

Die Verarbeitung erfolgt in Deutschland (Maramia GmbH), mit Verschlüsselung im Ruhezustand und während der Übertragung. Workspaces verfallen nach 7 Tagen. Keine Daten verlassen die EU. Für datenschutzsensible E-Mail-Verarbeitung ist das relevant.

TypeScript-Code zum Extrahieren von E-Mail-Anhängen

API-Referenz: data/upload, email/validate, img/validate, pdf/validate, flow.ocrImg, data/download/pdf

import { MaraDocsClient } from "@maramia/maradocs-sdk-ts";
import { okEmail } from "@maramia/maradocs-sdk-ts/models/email";
import { okImg } from "@maramia/maradocs-sdk-ts/models/img";
import { okPdf } from "@maramia/maradocs-sdk-ts/models/pdf";

const client = new MaraDocsClient({ workspaceSecret: workspace_secret });

// E-Mail hochladen und validieren
const uploaded = await client.data.upload(emailFile);
const validated = await client.email.validate({
  unvalidated_file_handle: uploaded.unvalidated_file_handle,
});
const email = okEmail(validated);

const pdfHandles: string[] = [];
for (const att of email.attachments) {
  if (att.content_type?.startsWith("image/")) {
    const imgVal = await client.img.validate({
      unvalidated_file_handle: att.unvalidated_file_handle,
    });
    const imgHandle = okImg(imgVal);
    const pdfHandle = await client.flow.ocrImgHandle(imgHandle);
    pdfHandles.push(pdfHandle);
  } else if (att.content_type === "application/pdf") {
    const pdfVal = await client.pdf.validate({
      unvalidated_file_handle: att.unvalidated_file_handle,
    });
    pdfHandles.push(okPdf(pdfVal));
  }
}
// Zusammenführen und herunterladen
const composed = await client.pdf.compose({
  pdfs: pdfHandles.map((pdf_handle) => ({ pdf_handle })),
});
const blob = await client.data.downloadPdf({ pdf_handle: composed.pdf_handle });

Python-Code zur E-Mail-Anhang-Extraktion

API-Referenz: data/upload, email/validate, img/validate, pdf/validate, pdf/compose, data/download/pdf

import requests
import time

API_URL = "https://api.maradocs.io/v1"
headers = {"Authorization": f"Bearer {WORKSPACE_SECRET}"}

def poll(url, job_id):
    while True:
        r = requests.get(f"{url}/{job_id}", headers=headers).json()
        if r["status"] == "complete":
            return r["response"]["response"]
        time.sleep(1)

# 1. E-Mail hochladen und validieren
upload = requests.post(f"{API_URL}/data/upload", headers=headers,
    files={"file": ("email.eml", email_bytes, "message/rfc822")}).json()
email_res = requests.post(f"{API_URL}/email/validate", headers=headers,
    json={"unvalidated_file_handle": upload["unvalidated_file_handle"]}).json()
email_data = poll(f"{API_URL}/email/validate", email_res["job_id"])

pdf_handles = []
for att in email_data.get("attachments", []):
    if att.get("content_type", "").startswith("image/"):
        img_res = requests.post(f"{API_URL}/img/validate", headers=headers,
            json={"unvalidated_file_handle": att["unvalidated_file_handle"]}).json()
        img_handle = poll(f"{API_URL}/img/validate", img_res["job_id"])["img_handle"]
        # Dann OCR-Workflow für Bilder... (gekürzt)
    elif att.get("content_type") == "application/pdf":
        pdf_res = requests.post(f"{API_URL}/pdf/validate", headers=headers,
            json={"unvalidated_file_handle": att["unvalidated_file_handle"]}).json()
        pdf_handles.append(poll(f"{API_URL}/pdf/validate", pdf_res["job_id"])["pdf_handle"])

# Zusammenführen und herunterladen
compose_res = requests.post(f"{API_URL}/pdf/compose", headers=headers,
    json={"pdfs": [{"pdf_handle": h} for h in pdf_handles]}).json()
composed = poll(f"{API_URL}/pdf/compose", compose_res["job_id"])
pdf_resp = requests.get(f"{API_URL}/data/download/pdf", headers=headers,
    params={"pdf_handle": composed["pdf_handle"]})
with open("attachments.pdf", "wb") as out:
    out.write(pdf_resp.content)

Zusammenfassung und nächste Schritte

Eine E-Mail-Anhang-Verarbeitungs-API, die Anhänge extrahiert, validiert und weiterleitet, ist verfügbar. MaraDocs übernimmt Virenscan, Formaterkennung und rekursives E-Mail-Parsing. Für vollständige Automatisierung kombinieren mit Dokumentenscanner, PDF-Verarbeitung und Texterkennung.


Jetzt ausprobieren: MaraDocs API | TypeScript SDK


Subscribe to our newsletter

Stay up to date with us and receive the latest news, articles, and resources by email.