Outlook Automatisierung: E-Mail-Workflows mit n8n und Make.com
Automatisieren Sie Ihre Outlook E-Mails, Kalender und Aufgaben.
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:| Aufgabe | Manueller Aufwand | Automatisiert |
|---|---|---|
| E-Mails sortieren | 30 Min/Tag | Automatisch |
| Standardantworten | 1h/Tag | Template + Trigger |
| Weiterleitung an Team | 20 Min/Tag | Regelbasiert |
| Follow-up Reminder | Vergessen... | Automatisch |
| Attachment-Verarbeitung | 15 Min/Tag | Sofort |
Outlook Automatisierungs-Optionen
1. Outlook-Regeln (Built-in)
Für einfache Automatisierungen direkt in Outlook:
- E-Mails in Ordner verschieben
- Weiterleiten
- Kategorisieren
- Benachrichtigungen
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 Portal → App registrations
- New registration
- Redirect URI: https://n8n.ihre-domain.de/rest/oauth2-credential/callback
- Mail.Read, Mail.Send, Mail.ReadWrite
- Für Kalender: Calendars.ReadWrite
- 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: E-Mail Entwurf erstellen// 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: 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
| Modul | Funktion |
|---|---|
| Watch Emails | Trigger bei neuen E-Mails |
| Get an Email | E-Mail abrufen |
| Send an Email | E-Mail senden |
| Create a Draft | Entwurf erstellen |
| Move an Email | Verschieben |
| List Attachments | Anhänge auflisten |
| Download Attachment | Anhang 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 zusammenfassenVon: ${m.from}\n${m.body}const thread = $json.conversationThread;
const prompt =
Fasse diesen E-Mail-Thread zusammen:
${thread.map(m =>
).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ösung | Kosten |
|---|---|
| Outlook-Regeln | Kostenlos |
| Power Automate | Im M365 enthalten |
| n8n Cloud | Ab 20€/Monat |
| Make.com | Ab 9€/Monat |
Fazit
Outlook-Automatisierung spart täglich Zeit:
- Intelligente Sortierung
- Automatische Antworten
- Attachment-Verarbeitung
- Follow-up Tracking
Weiterführende Artikel
- Microsoft Teams Bot erstellen: Automatisierung im Microsoft-Ökosystem
- Marketing Automation für KMU: Praktische Strategien
- Workflow-Automatisierung: Praxisbeispiele für Unternehmen
Nächste Schritte
Wir unterstützen Sie bei der Outlook-Automatisierung – von der Einrichtung bis zum produktiven Einsatz.