Use Cases

Outlook Automatisierung: E-Mail-Workflows mit n8n und Make.com

Automatisieren Sie Ihre Outlook E-Mails, Kalender und Aufgaben.

13 min Lesezeit

Ihr Outlook-Postfach quillt über? Sie verbringen Stunden damit, E-Mails zu sortieren, weiterzuleiten und zu beantworten? Mit Outlook-Automatisierung können Sie diese Routineaufgaben automatisieren. In diesem Guide zeigen wir praktische Workflows für produktiveres E-Mail-Management.

Warum Outlook automatisieren?

Typische Zeitfresser:
AufgabeManueller AufwandAutomatisiert
E-Mails sortieren30 Min/TagAutomatisch
Standardantworten1h/TagTemplate + Trigger
Weiterleitung an Team20 Min/TagRegelbasiert
Follow-up ReminderVergessen...Automatisch
Attachment-Verarbeitung15 Min/TagSofort
Potenzial: 2-3 Stunden/Tag für produktivere Arbeit.

Outlook Automatisierungs-Optionen

1. Outlook-Regeln (Built-in)

Für einfache Automatisierungen direkt in Outlook:

  • E-Mails in Ordner verschieben
  • Weiterleiten
  • Kategorisieren
  • Benachrichtigungen

Limitierung: Nur wenn Outlook läuft, keine komplexe Logik.

2. Power Automate (Microsoft)

Microsofts Automatisierungs-Plattform:

  • Tiefe Outlook-Integration
  • Viele Vorlagen
  • Im Microsoft 365 Ökosystem

3. n8n / Make.com (Flexibler)

Für komplexe Workflows und externe Integrationen:

  • Verbindung zu beliebigen Apps
  • Komplexe Logik möglich
  • Mehr Kontrolle

Schritt 1: Outlook mit n8n verbinden

Microsoft OAuth einrichten

  • Azure AD App registrieren:
  • - Azure Portal → App registrations

    - New registration

    - Redirect URI: https://n8n.ihre-domain.de/rest/oauth2-credential/callback

  • Berechtigungen:
  • - Mail.Read, Mail.Send, Mail.ReadWrite

    - Für Kalender: Calendars.ReadWrite

  • In n8n:
  • - Credentials → Microsoft Outlook OAuth2 API

    - Client ID und Secret eintragen

    - Authorize

    IMAP/SMTP Alternative

    Für einfachere Setups ohne OAuth:

    IMAP (Empfangen):
    
    • Server: outlook.office365.com
    • Port: 993
    • SSL: Ja

    SMTP (Senden):

    • Server: smtp.office365.com
    • Port: 587
    • TLS: Ja

    Workflow 1: Intelligente E-Mail-Sortierung

    Der Workflow

    Neue E-Mail eingetroffen
    

    Absender/Betreff analysieren

    Switch:

    ├─ Von Kunde → #kunden Ordner + CRM

    ├─ Rechnung → #buchhaltung + Lexoffice

    ├─ Support → Ticket erstellen

    └─ Newsletter → Archiv / Löschen

    n8n Implementation

    Node 1: Microsoft Outlook Trigger
    // Trigger bei neuer E-Mail
    

    {

    "resource": "message",

    "operation": "getAll",

    "filters": {

    "isRead": false // Nur ungelesene

    }

    }

    Node 2: Klassifizierung
    // Node: Code
    

    const email = $json;

    const from = email.from.emailAddress.address.toLowerCase();

    const subject = email.subject.toLowerCase();

    // Absender-basierte Klassifizierung

    if (from.includes('@kunde1.de') || from.includes('@kunde2.de')) {

    return { category: 'customer', priority: 'high' };

    }

    // Betreff-basierte Klassifizierung

    if (subject.includes('rechnung') || subject.includes('invoice')) {

    return { category: 'invoice', priority: 'medium' };

    }

    if (subject.includes('support') || subject.includes('hilfe')) {

    return { category: 'support', priority: 'high' };

    }

    if (from.includes('newsletter') || from.includes('noreply')) {

    return { category: 'newsletter', priority: 'low' };

    }

    return { category: 'other', priority: 'normal' };

    Node 3: In Ordner verschieben
    // Node: Microsoft Outlook - Move Message
    

    {

    "messageId": "{{ $json.id }}",

    "destinationFolderId": "{{ $json.category === 'customer' ? 'FOLDER_ID_CUSTOMERS' : 'INBOX' }}"

    }

    Workflow 2: Auto-Responder mit KI

    Der Workflow

    Neue Support-E-Mail
    

    KI analysiert Anfrage

    Passende Antwort aus KB suchen

    Entwurf erstellen

    Zur Prüfung vorlegen ODER

    Automatisch senden (einfache Fälle)

    Implementation mit OpenAI

    // Node: OpenAI
    

    const prompt =

    Du bist ein freundlicher Kundenservice-Mitarbeiter.

    Analysiere diese E-Mail und erstelle eine passende Antwort.

    E-Mail:

    Von: ${$json.from.emailAddress.address}

    Betreff: ${$json.subject}

    Inhalt: ${$json.body.content}

    Regeln:

    • Antworte auf Deutsch
    • Sei höflich und hilfsbereit
    • Bei komplexen Fragen: Verweise auf Support-Team
    • Signatur: "Mit freundlichen Grüßen, Ihr Support-Team"
    ;

    // OpenAI Completion

    const response = await openai.chat({

    model: "gpt-4",

    messages: [{ role: "user", content: prompt }]

    });

    return { draftReply: response.content };

    Node: E-Mail Entwurf erstellen
    // Node: Microsoft Outlook - Create Draft
    

    {

    "subject": "Re: {{ $json.subject }}",

    "body": {

    "contentType": "HTML",

    "content": "{{ $json.draftReply }}"

    },

    "toRecipients": [

    { "emailAddress": { "address": "{{ $json.from.emailAddress.address }}" } }

    ]

    }

    Workflow 3: Attachment-Verarbeitung

    Der Workflow

    E-Mail mit Anhang
    

    Anhang-Typ prüfen

    PDF Rechnung → OCR → Lexoffice

    Excel Report → Google Sheets

    Bild → Komprimieren → Drive

    Implementation

    // Node: Code - Anhänge verarbeiten
    

    const attachments = $json.attachments || [];

    for (const attachment of attachments) {

    const filename = attachment.name.toLowerCase();

    const contentType = attachment.contentType;

    if (filename.endsWith('.pdf')) {

    return { type: 'pdf', action: 'process_invoice', attachment };

    }

    if (filename.endsWith('.xlsx') || filename.endsWith('.csv')) {

    return { type: 'spreadsheet', action: 'import_to_sheets', attachment };

    }

    if (contentType.startsWith('image/')) {

    return { type: 'image', action: 'save_to_drive', attachment };

    }

    }

    return { type: 'other', action: 'archive', attachment: null };

    Workflow 4: Follow-up Reminder

    Der Workflow

    E-Mail gesendet
    

    Wichtig markiert?

    Ja: Reminder in 3 Tagen setzen

    [Nach 3 Tagen]

    Antwort erhalten?

    Nein → Erinnerung senden

    Implementation

    // Node 1: E-Mail senden und tracken
    

    const sentEmail = await sendEmail({

    to: recipient,

    subject: subject,

    body: body

    });

    // In Datenbank speichern

    await saveToDb('email_tracking', {

    messageId: sentEmail.id,

    recipient: recipient,

    subject: subject,

    sentAt: new Date(),

    followUpDate: addDays(new Date(), 3),

    status: 'awaiting_reply'

    });

    // Node 2: Täglicher Check (Schedule Trigger)
    

    const pendingFollowUps = await getFromDb('email_tracking', {

    status: 'awaiting_reply',

    followUpDate: { $lte: new Date() }

    });

    for (const email of pendingFollowUps) {

    // Prüfen ob Antwort eingegangen

    const hasReply = await checkForReply(email.messageId);

    if (!hasReply) {

    // Erinnerung an sich selbst

    await sendTeamsNotification(Follow-up nötig: ${email.subject});

    } else {

    await updateDb('email_tracking', email.id, { status: 'replied' });

    }

    }

    Workflow 5: Meeting-Einladungen automatisieren

    Der Workflow

    Neuer Lead (CRM)
    

    Verfügbare Slots finden (Kalender)

    E-Mail mit Terminvorschlägen

    Link zu Calendly/Booking

    Integration mit Kalender

    // Node: Microsoft Outlook - Find Available Slots
    

    {

    "resource": "calendar",

    "operation": "findMeetingTimes",

    "attendees": [

    { "emailAddress": { "address": "{{ $json.leadEmail }}" } }

    ],

    "timeConstraint": {

    "timeslots": [

    {

    "start": { "dateTime": "{{ $now.plus(1, 'day').toISO() }}" },

    "end": { "dateTime": "{{ $now.plus(7, 'days').toISO() }}" }

    }

    ]

    },

    "meetingDuration": "PT1H"

    }

    Make.com: Outlook Module

    Verfügbare Module

    ModulFunktion
    Watch EmailsTrigger bei neuen E-Mails
    Get an EmailE-Mail abrufen
    Send an EmailE-Mail senden
    Create a DraftEntwurf erstellen
    Move an EmailVerschieben
    List AttachmentsAnhänge auflisten
    Download AttachmentAnhang herunterladen

    Beispiel-Szenario

    Outlook (Watch Emails)
    

    Filter: Von @wichtig-kunde.de

    Slack: Benachrichtigung

    Google Sheets: Loggen

    Outlook: Als gelesen markieren

    Erweiterte Patterns

    E-Mail-Parsing für strukturierte Daten

    // Bestellbestätigungen parsen
    

    const body = $json.body.content;

    // Regex für Bestellnummer

    const orderMatch = body.match(/Bestellnummer:\s*(\d+)/i);

    const orderId = orderMatch ? orderMatch[1] : null;

    // Regex für Betrag

    const amountMatch = body.match(/Gesamtbetrag:\s<em>([\d,]+)\s</em>€/i);

    const amount = amountMatch ? parseFloat(amountMatch[1].replace(',', '.')) : null;

    return { orderId, amount };

    Spam-Erkennung

    // Einfache Spam-Heuristik
    

    const spamIndicators = [

    'unsubscribe',

    'click here',

    'limited time',

    'act now',

    'winner'

    ];

    const body = $json.body.content.toLowerCase();

    const subject = $json.subject.toLowerCase();

    let spamScore = 0;

    for (const indicator of spamIndicators) {

    if (body.includes(indicator) || subject.includes(indicator)) {

    spamScore += 1;

    }

    }

    return { isSpam: spamScore >= 2, spamScore };

    Thread-Zusammenfassung

    // E-Mail-Thread mit KI zusammenfassen
    

    const thread = $json.conversationThread;

    const prompt =

    Fasse diesen E-Mail-Thread zusammen:

    ${thread.map(m => Von: ${m.from}\n${m.body}).join('\n---\n')}

    Gib mir:

  • Hauptthema
  • Offene Punkte
  • Nächste Schritte
  • ;

    const summary = await openai.chat({ messages: [{ role: 'user', content: prompt }] });

    return { summary: summary.content };

    Best Practices

    1. Batch-Verarbeitung

    // Nicht jede E-Mail einzeln, sondern in Batches
    

    const emails = await getUnreadEmails(50); // Max 50

    for (const batch of chunk(emails, 10)) {

    await processEmails(batch);

    await wait(1000); // Rate Limit beachten

    }

    2. Fehlertoleranz

    // E-Mail-Verarbeitung darf nicht fehlschlagen
    

    try {

    await processEmail(email);

    } catch (error) {

    console.error(Failed to process ${email.id}:, error);

    await moveToFolder(email.id, 'ProcessingErrors');

    await alertAdmin(error);

    }

    3. Audit Trail

    // Alle Aktionen loggen
    

    await logAction({

    emailId: email.id,

    action: 'moved_to_folder',

    folder: targetFolder,

    timestamp: new Date(),

    reason: classificationResult.reason

    });

    Kosten

    LösungKosten
    Outlook-RegelnKostenlos
    Power AutomateIm M365 enthalten
    n8n CloudAb 20€/Monat
    Make.comAb 9€/Monat

    Fazit

    Outlook-Automatisierung spart täglich Zeit:

    • Intelligente Sortierung
    • Automatische Antworten
    • Attachment-Verarbeitung
    • Follow-up Tracking

    Weiterführende Artikel

    Nächste Schritte

  • OAuth einrichten (Azure AD)
  • Ersten Workflow erstellen (z.B. Sortierung)
  • Komplexere Logik hinzufügen (KI, externe Apps)
  • Monitoring einrichten
  • Wir unterstützen Sie bei der Outlook-Automatisierung – von der Einrichtung bis zum produktiven Einsatz.

    Sie haben Fragen zur Automatisierung?

    Unsere Experten helfen Ihnen, die richtigen Entscheidungen für Ihr Unternehmen zu treffen.