Die erste vollständige E-Mail-API: Wie Forward Email das E-Mail-Management revolutionierte
TL;DR: Wir haben die weltweit erste vollständige REST-API für das E-Mail-Management mit erweiterten Suchfunktionen entwickelt, die kein anderer Dienst bietet. Während Gmail, Outlook und Apple Entwickler in IMAP-Höllen oder rate-limitierte APIs zwingen, liefert Forward Email blitzschnelle CRUD-Operationen für Nachrichten, Ordner, Kontakte und Kalender über eine einheitliche REST-Schnittstelle mit über 15 Suchparametern. Dies ist die E-Mail-API, auf die Entwickler gewartet haben.
Das Problem mit der E-Mail-API
E-Mail-APIs sind grundsätzlich kaputt. Punkt.
Jeder große E-Mail-Anbieter zwingt Entwickler zu einer von zwei schrecklichen Entscheidungen:
- IMAP-Hölle: Kämpfen mit einem 30 Jahre alten Protokoll, das für Desktop-Clients und nicht für moderne Anwendungen entwickelt wurde
- Beschränkte APIs: Rate-begrenzte, nur lesbare, OAuth-komplexe APIs, die Ihre tatsächlichen E-Mail-Daten nicht verwalten können
Das Ergebnis? Entwickler geben entweder die E-Mail-Integration ganz auf oder verschwenden Wochen damit, fragile IMAP-Wrapper zu bauen, die ständig kaputtgehen.
Warning
Das schmutzige Geheimnis: Die meisten „E-Mail-APIs“ sind nur Versand-APIs. Sie können Ordner nicht programmatisch organisieren, Kontakte synchronisieren oder Kalender über eine einfache REST-Schnittstelle verwalten. Bis jetzt.
Was Entwickler tatsächlich sagen
Die Frustration ist real und überall dokumentiert:
„Ich habe kürzlich versucht, Gmail in meine App zu integrieren, und habe zu viel Zeit darauf verwendet. Ich habe entschieden, dass es sich nicht lohnt, Gmail zu unterstützen.“
- Hacker News Entwickler, 147 Upvotes
„Sind alle E-Mail-APIs mittelmäßig? Sie scheinen in irgendeiner Weise eingeschränkt oder begrenzt zu sein.“
„Warum muss E-Mail-Entwicklung so nervig sein?“
- Reddit r/webdev, 89 Kommentare voller Entwickler-Schmerz
„Was macht die Gmail-API effizienter als IMAP? Ein weiterer Grund, warum die Gmail-API viel effizienter ist, ist, dass jede Nachricht nur einmal heruntergeladen werden muss. Bei IMAP muss jede Nachricht heruntergeladen und indexiert werden...“
- Stack Overflow Frage mit 47 Upvotes
Die Beweise sind überall:
- WordPress SMTP-Probleme: 631 GitHub-Issues über E-Mail-Zustellungsfehler
- Zapier-Einschränkungen: Community-Beschwerden über 10 E-Mails/Stunde Limits und IMAP-Erkennungsfehler
- IMAP-API-Projekte: Mehrere Open-Source Projekte existieren speziell, um „IMAP in REST zu konvertieren“, weil kein Anbieter das anbietet
- Gmail-API-Frustrationen: Stack Overflow hat 4.847 Fragen mit dem Tag „gmail-api“ mit häufigen Beschwerden über Rate Limits und Komplexität
Forward Email's revolutionäre Lösung
Wir sind der erste E-Mail-Dienst, der vollständige CRUD-Operationen für alle E-Mail-Daten über eine einheitliche REST-API anbietet.
Das ist nicht nur eine weitere Versand-API. Das ist vollständige programmatische Kontrolle über:
- Nachrichten: Erstellen, lesen, aktualisieren, löschen, suchen, verschieben, markieren
- Ordner: Vollständige IMAP-Ordnerverwaltung über REST-Endpunkte
- Kontakte: CardDAV Kontakt-Speicherung und Synchronisation
- Kalender: CalDAV Kalenderereignisse und Terminplanung
Warum wir das gebaut haben
Das Problem: Jeder E-Mail-Anbieter behandelt E-Mail als Blackbox. Sie können E-Mails senden, vielleicht mit komplexem OAuth lesen, aber Sie können Ihre E-Mail-Daten nicht wirklich programmatisch verwalten.
Unsere Vision: E-Mail sollte so einfach zu integrieren sein wie jede moderne API. Keine IMAP-Bibliotheken. Keine OAuth-Komplexität. Keine Rate-Limit-Albträume. Einfach nur funktionierende REST-Endpunkte.
Das Ergebnis: Der erste E-Mail-Dienst, bei dem Sie einen kompletten E-Mail-Client, CRM-Integration oder Automatisierungssystem nur mit HTTP-Anfragen bauen können.
Einfache Authentifizierung
Kein OAuth-Komplexität. Keine app-spezifischen Passwörter. Nur Ihre Alias-Zugangsdaten:
curl -u "alias@yourdomain.com:password" \
https://api.forwardemail.net/v1/messages
20 Endpunkte, die alles verändern
Nachrichten (5 Endpunkte)
GET /v1/messages- Nachrichten mit Filterung auflisten (?folder=,?is_unread=,?is_flagged=)POST /v1/messages- Neue Nachrichten direkt in Ordner sendenGET /v1/messages/:id- Spezifische Nachricht mit vollständigen Metadaten abrufenPUT /v1/messages/:id- Nachricht aktualisieren (Flags, Ordner, Lesestatus)DELETE /v1/messages/:id- Nachricht dauerhaft löschen
Ordner (5 Endpunkte)
GET /v1/folders- Alle Ordner mit Abonnementstatus auflistenPOST /v1/folders- Neuen Ordner mit benutzerdefinierten Eigenschaften erstellenGET /v1/folders/:id- Ordnerdetails und Nachrichtenanzahl abrufenPUT /v1/folders/:id- Ordner-Eigenschaften und Abonnement aktualisierenDELETE /v1/folders/:id- Ordner löschen und Nachrichten umsortieren
Kontakte (5 Endpunkte)
GET /v1/contacts- Kontakte mit Suche und Paginierung auflistenPOST /v1/contacts- Neuen Kontakt mit vollständiger vCard-Unterstützung erstellenGET /v1/contacts/:id- Kontakt mit allen Feldern und Metadaten abrufenPUT /v1/contacts/:id- Kontaktinformationen mit ETag-Validierung aktualisierenDELETE /v1/contacts/:id- Kontakt mit Kaskadierung löschen
Kalender (5 Endpunkte)
GET /v1/calendars- Kalenderereignisse mit Datumsfilter auflistenPOST /v1/calendars- Kalenderereignis mit Teilnehmern und Wiederholung erstellenGET /v1/calendars/:id- Ereignisdetails mit Zeitzonenbehandlung abrufenPUT /v1/calendars/:id- Ereignis mit Konflikterkennung aktualisierenDELETE /v1/calendars/:id- Ereignis mit Teilnehmerbenachrichtigungen löschen
Erweiterte Suche: Kein anderer Dienst kommt heran
Forward Email ist der einzige E-Mail-Dienst, der eine umfassende, programmatische Suche über alle Nachrichtenfelder hinweg über eine REST-API anbietet.
Während andere Anbieter bestenfalls einfache Filter bieten, haben wir die fortschrittlichste E-Mail-Such-API aller Zeiten entwickelt. Keine Gmail-API, Outlook-API oder ein anderer Dienst kommt an unsere Suchfunktionen heran.
Die Such-API-Landschaft ist kaputt
Einschränkungen der Gmail API Suche:
- ✅ Nur einfacher
q-Parameter - ❌ Keine feldspezifische Suche
- ❌ Keine Datumsbereichsfilterung
- ❌ Keine Größenfilterung
- ❌ Kein Anhangsfilter
- ❌ Beschränkt auf die Suchsyntax von Gmail
Einschränkungen der Outlook API Suche:
- ✅ Einfacher
$search-Parameter - ❌ Keine erweiterte Feldzielauswahl
- ❌ Keine komplexen Abfragekombinationen
- ❌ Aggressive Ratenbegrenzung
- ❌ Komplexe OData-Syntax erforderlich
Apple iCloud:
- ❌ Keine API vorhanden
- ❌ Nur IMAP-Suche (wenn sie funktioniert)
ProtonMail & Tuta:
- ❌ Keine öffentlichen APIs
- ❌ Keine programmatischen Suchfunktionen
Forward Emails revolutionäre Such-API
Wir bieten 15+ Suchparameter, die kein anderer Dienst bereitstellt:
| Suchfunktion | Forward Email | Gmail API | Outlook API | Andere |
|---|---|---|---|---|
| Feldspezifische Suche | ✅ Betreff, Inhalt, von, an, cc, Header | ❌ | ❌ | ❌ |
| Mehrfeld-Generalsuche | ✅ ?search= über alle Felder |
✅ Einfaches q= |
✅ Einfaches $search= |
❌ |
| Datumsbereichsfilterung | ✅ ?since= & ?before= |
❌ | ❌ | ❌ |
| Größenbasierte Filterung | ✅ ?min_size= & ?max_size= |
❌ | ❌ | ❌ |
| Anhangsfilterung | ✅ ?has_attachments=true/false |
❌ | ❌ | ❌ |
| Header-Suche | ✅ ?headers=X-Priority |
❌ | ❌ | ❌ |
| Nachrichten-ID-Suche | ✅ ?message_id=abc123 |
❌ | ❌ | ❌ |
| Kombinierte Filter | ✅ Mehrere Parameter mit UND-Logik | ❌ | ❌ | ❌ |
| Groß-/Kleinschreibung ignorieren | ✅ Alle Suchanfragen | ✅ | ✅ | ❌ |
| Paginierungsunterstützung | ✅ Funktioniert mit allen Suchparametern | ✅ | ✅ | ❌ |
Real-World Search Examples
Alle Rechnungen aus dem letzten Quartal finden:
# Forward Email - Einfach und leistungsstark
GET /v1/messages?subject=invoice&since=2024-01-01T00:00:00Z&before=2024-04-01T00:00:00Z
# Gmail API - Unmöglich mit deren eingeschränkter Suche
# Keine Filterung nach Datumsbereich verfügbar
# Outlook API - Komplexe OData-Syntax, eingeschränkte Funktionalität
GET /me/messages?$search="invoice"&$filter=receivedDateTime ge 2024-01-01T00:00:00Z
Nach großen Anhängen von einem bestimmten Absender suchen:
# Forward Email - Umfassende Filterung
GET /v1/messages?from=finance@company.com&has_attachments=true&min_size=1000000
# Gmail API - Keine programmatische Filterung nach Größe oder Anhängen möglich
# Outlook API - Keine Größenfilterung verfügbar
# Andere - Keine APIs verfügbar
Komplexe Mehrfeldsuche:
# Forward Email - Erweiterte Abfragefunktionen
GET /v1/messages?body=quarterly&from=manager&is_flagged=true&folder=Reports
# Gmail API - Nur einfache Textsuche möglich
GET /gmail/v1/users/me/messages?q=quarterly
# Outlook API - Einfache Suche ohne Feldzielsetzung
GET /me/messages?$search="quarterly"
Performance Advantages
Forward Email Such-Performance:
- ⚡ Antwortzeiten unter 100 ms bei komplexen Suchanfragen
- 🔍 Regex-Optimierung mit korrekter Indexierung
- 📊 Parallele Abfrageausführung für Zählungen und Daten
- 💾 Effiziente Speichernutzung durch schlanke Abfragen
Leistungsprobleme der Konkurrenz:
- 🐌 Gmail API: Limitierung auf 250 Quota-Einheiten pro Nutzer und Sekunde
- 🐌 Outlook API: Aggressives Throttling mit komplexen Backoff-Anforderungen
- 🐌 Andere: Keine APIs zum Vergleich verfügbar
Search Features No One Else Has
1. Header-Specific Search
# Nachrichten mit bestimmten Headern finden
GET /v1/messages?headers=X-Priority:1
GET /v1/messages?headers=X-Spam-Score
2. Size-Based Intelligence
# Newsletter-E-Mails finden (typischerweise groß)
GET /v1/messages?min_size=50000&from=newsletter
# Schnelle Antworten finden (typischerweise klein)
GET /v1/messages?max_size=1000&to=support
3. Attachment-Based Workflows
# Alle Dokumente finden, die an das Rechtsteam gesendet wurden
GET /v1/messages?to=legal&has_attachments=true&body=contract
# E-Mails ohne Anhänge zur Bereinigung finden
GET /v1/messages?has_attachments=false&before=2023-01-01T00:00:00Z
4. Combined Business Logic
# Dringende markierte Nachrichten von VIPs mit Anhängen finden
GET /v1/messages?is_flagged=true&from=ceo&has_attachments=true&subject=urgent
Why This Matters for Developers
Anwendungen bauen, die vorher unmöglich waren:
- Erweiterte E-Mail-Analysen: E-Mail-Muster nach Größe, Absender, Inhalt analysieren
- Intelligentes E-Mail-Management: Automatische Organisation basierend auf komplexen Kriterien
- Compliance und Discovery: Spezifische E-Mails für rechtliche Anforderungen finden
- Business Intelligence: Erkenntnisse aus E-Mail-Kommunikationsmustern gewinnen
- Automatisierte Workflows: Aktionen basierend auf ausgefeilten E-Mail-Filtern auslösen
The Technical Implementation
Unsere Such-API verwendet:
- Regex-Optimierung mit geeigneten Indexierungsstrategien
- Parallele Ausführung für Performance
- Eingabevalidierung für Sicherheit
- Umfassende Fehlerbehandlung für Zuverlässigkeit
// Beispiel: Komplexe Suchimplementierung
const searchConditions = [];
if (ctx.query.subject) {
searchConditions.push({
subject: { $regex: ctx.query.subject, $options: 'i' }
});
}
if (ctx.query.from) {
searchConditions.push({
$or: [
{ 'from.address': { $regex: ctx.query.from, $options: 'i' } },
{ 'from.name': { $regex: ctx.query.from, $options: 'i' } }
]
});
}
// Kombination mit UND-Logik
if (searchConditions.length > 0) {
query.$and = searchConditions;
}
Tip
Entwicklervorteil: Mit der Such-API von Forward Email können Sie E-Mail-Anwendungen erstellen, die in Funktionalität mit Desktop-Clients konkurrieren und gleichzeitig die Einfachheit von REST-APIs bewahren.
Blazing Fast Performance Architecture
Unser technischer Stack ist auf Geschwindigkeit und Zuverlässigkeit ausgelegt:
Performance Benchmarks
Warum wir blitzschnell sind:
| Komponente | Technologie | Performance-Vorteil |
|---|---|---|
| Speicher | NVMe SSD | 10x schneller als herkömmliche SATA |
| Datenbank | SQLite + msgpackr | Keine Netzwerklatenz, optimierte Serialisierung |
| Hardware | AMD Ryzen bare metal | Keine Virtualisierungs-Overhead |
| Caching | Im Speicher + persistent | Antwortzeiten unter einer Millisekunde |
| Backups | Cloudflare R2 verschlüsselt | Enterprise-Grade Zuverlässigkeit |
Echte Performance-Zahlen:
- API-Antwortzeit: < 50ms im Durchschnitt
- Nachrichtenabruf: < 10ms für zwischengespeicherte Nachrichten
- Ordneroperationen: < 5ms für Metadaten-Operationen
- Kontakt-Synchronisation: 1000+ Kontakte/Sekunde
- Verfügbarkeit: 99,99% SLA mit redundanter Infrastruktur
Privacy-First Architecture
Zero-Knowledge Design: Nur Sie haben mit Ihrem IMAP-Passwort Zugriff – wir können Ihre E-Mails nicht lesen. Unsere Zero-Knowledge-Architektur gewährleistet vollständige Privatsphäre bei gleichzeitig blitzschneller Performance.
Warum wir anders sind: Der komplette Vergleich
Wichtige Einschränkungen der Anbieter
Vorteile von Forward Email
| Funktion | Forward Email | Konkurrenz |
|---|---|---|
| Vollständiges CRUD | ✅ Vollständiges Erstellen, Lesen, Aktualisieren, Löschen aller Daten | ❌ Nur Lesezugriff oder eingeschränkte Operationen |
| Einheitliche API | ✅ Nachrichten, Ordner, Kontakte, Kalender in einer API | ❌ Getrennte APIs oder fehlende Funktionen |
| Einfache Authentifizierung | ✅ Basis-Authentifizierung mit Alias-Zugangsdaten | ❌ Komplexes OAuth mit mehreren Berechtigungen |
| Keine Ratenbegrenzung | ✅ Großzügige Limits, ausgelegt für reale Anwendungen | ❌ Einschränkende Quoten, die Arbeitsabläufe stören |
| Self-Hosting | ✅ Vollständige Self-Hosting-Option | ❌ Nur Vendor-Lock-in |
| Datenschutz | ✅ Zero-Knowledge, verschlüsselt, privat | ❌ Datenanalyse und Datenschutzbedenken |
| Leistung | ✅ Antworten unter 50 ms, NVMe-Speicher | ❌ Netzwerkverzögerungen, Drosselungs-Verzögerungen |
Das Open-Source-Transparenzproblem
ProtonMail und Tuta vermarkten sich als „Open Source“ und „transparent“, aber das ist irreführendes Marketing, das moderne Datenschutzprinzipien verletzt.
Warning
Falsche Transparenzbehauptungen: Sowohl ProtonMail als auch Tuta werben prominent mit ihren „Open Source“-Qualitäten, während ihr kritischster serverseitiger Code proprietär und geschlossen bleibt.
Die Täuschung von ProtonMail:
- Behauptungen: "Wir sind Open Source" prominent im Marketing
- Realität: Server-Code ist vollständig proprietär – nur Client-Apps sind Open Source
- Auswirkung: Nutzer können serverseitige Verschlüsselung, Datenverarbeitung oder Datenschutzbehauptungen nicht überprüfen
- Verstoß gegen Transparenz: Keine Möglichkeit, die tatsächlichen E-Mail-Verarbeitungs- und Speichersysteme zu prüfen
Das irreführende Marketing von Tuta:
- Behauptungen: "Open Source E-Mail" als zentrales Verkaufsargument
- Realität: Backend-Infrastruktur ist Closed Source – nur Frontend ist verfügbar
- Auswirkung: Proprietäre Verschlüsselung verhindert Standard-E-Mail-Protokolle (IMAP/SMTP)
- Lock-in-Strategie: Eigene Verschlüsselung erzwingt Anbieterabhängigkeit
Warum das für modernen Datenschutz wichtig ist:
Im Jahr 2025 erfordert echter Datenschutz vollständige Transparenz. Wenn E-Mail-Anbieter „Open Source“ behaupten, aber ihren Server-Code verbergen:
- Nicht überprüfbare Verschlüsselung: Sie können nicht prüfen, wie Ihre Daten tatsächlich verschlüsselt werden
- Versteckte Datenpraktiken: Serverseitige Datenverarbeitung bleibt eine Blackbox
- Vertrauensbasierte Sicherheit: Sie müssen deren Behauptungen ohne Überprüfung vertrauen
- Vendor Lock-in: Proprietäre Systeme verhindern Datenportabilität
Die echte Transparenz von Forward Email:
- ✅ Vollständig Open Source – Server- und Client-Code
- ✅ Self-Hosting verfügbar – eigene Instanz betreiben
- ✅ Standardprotokolle – IMAP, SMTP, CardDAV, CalDAV kompatibel
- ✅ Auditierbare Sicherheit – jede Codezeile kann geprüft werden
- ✅ Kein Vendor Lock-in – Ihre Daten, Ihre Kontrolle
Tip
Echte Open Source bedeutet, dass Sie jede Behauptung überprüfen können. Mit Forward Email können Sie unsere Verschlüsselung auditieren, unsere Datenverarbeitung prüfen und sogar Ihre eigene Instanz betreiben. Das ist echte Transparenz.
30+ Praxisbeispiele für Integrationen
1. WordPress Kontaktformular-Erweiterung
Problem: WordPress SMTP-Konfigurationsfehler (631 GitHub-Issues) Lösung: Direkte API-Integration umgeht vollständig SMTP
// WordPress-Kontaktformular, das im Gesendet-Ordner speichert
await fetch('https://api.forwardemail.net/v1/messages', {
method: 'POST',
headers: {
'Authorization': 'Basic ' + btoa('contact@site.com:password'),
'Content-Type': 'application/json'
},
body: JSON.stringify({
to: [{ address: 'owner@site.com' }],
subject: 'Kontaktformular: ' + formData.subject,
text: formData.message,
folder: 'Sent'
})
});
2. Zapier-Alternative für E-Mail-Automatisierung
Problem: Zapier's Limit von 10 E-Mails/Stunde und IMAP-Erkennungsfehler Lösung: Unbegrenzte Automatisierung mit voller E-Mail-Kontrolle
// E-Mails automatisch nach Absender-Domain organisieren
const messages = await fetch('/v1/messages?folder=INBOX');
for (const message of messages) {
const domain = message.from.split('@')[1];
await fetch(`/v1/messages/${message.id}`, {
method: 'PUT',
body: JSON.stringify({ folder: `Clients/${domain}` })
});
}
3. CRM-E-Mail-Synchronisierung
Problem: Manuelle Kontaktverwaltung zwischen E-Mail und CRM-Systemen Lösung: Bidirektionale Synchronisation mit CardDAV Kontakt-API
// Neue E-Mail-Kontakte mit CRM synchronisieren
const newContacts = await fetch('/v1/contacts');
for (const contact of newContacts) {
await crmAPI.createContact({
name: contact.name,
email: contact.email,
source: 'email_api'
});
}
4. E-Commerce-Bestellabwicklung
Problem: Manuelle Verarbeitung von Bestell-E-Mails für E-Commerce-Plattformen Lösung: Automatisierte Bestellverwaltungspipeline
// Bestellbestätigungs-E-Mails verarbeiten
const orders = await fetch('/v1/messages?folder=Orders');
const orderEmails = orders.filter(msg =>
msg.subject.includes('Order Confirmation')
);
for (const order of orderEmails) {
const orderData = parseOrderEmail(order.text);
await updateInventory(orderData);
await fetch(`/v1/messages/${order.id}`, {
method: 'PUT',
body: JSON.stringify({ folder: 'Orders/Processed' })
});
}
5. Support-Ticket-Integration
Problem: E-Mail-Konversationen verstreut über Helpdesk-Plattformen Lösung: Vollständige Nachverfolgung von E-Mail-Konversationen
// Support-Ticket aus E-Mail-Konversation erstellen
const messages = await fetch('/v1/messages?folder=Support');
const supportEmails = messages.filter(msg =>
msg.to.some(addr => addr.includes('support@'))
);
for (const email of supportEmails) {
const ticket = await supportSystem.createTicket({
subject: email.subject,
from: email.from,
body: email.text,
timestamp: email.date
});
}
6. Newsletter-Verwaltungssystem
Problem: Begrenzte Integrationen von Newsletter-Plattformen Lösung: Vollständiges Abonnenten-Lifecycle-Management
// Newsletter-Abonnements automatisch verwalten
const messages = await fetch('/v1/messages?folder=Newsletter');
const unsubscribes = messages.filter(msg =>
msg.subject.toLowerCase().includes('unsubscribe')
);
for (const msg of unsubscribes) {
await removeSubscriber(msg.from);
await fetch(`/v1/messages/${msg.id}`, {
method: 'PUT',
body: JSON.stringify({ folder: 'Newsletter/Unsubscribed' })
});
}
7. E-Mail-basierte Aufgabenverwaltung
Problem: Überwältigender Posteingang und Aufgabenverfolgung Lösung: E-Mails in umsetzbare Aufgaben umwandeln
// Create tasks from flagged emails
const messages = await fetch('/v1/messages?is_flagged=true');
for (const email of messages) {
await taskManager.createTask({
title: email.subject,
description: email.text,
assignee: email.to[0].address,
dueDate: extractDueDate(email.text)
});
}
8. Multi-Account Email Aggregation
Problem: Managing multiple email accounts across providers Solution: Unified inbox interface
// Aggregate emails from multiple accounts
const accounts = ['work@domain.com', 'personal@domain.com'];
const allMessages = [];
for (const account of accounts) {
const messages = await fetch('/v1/messages', {
headers: { 'Authorization': getAuth(account) }
});
allMessages.push(...messages.map(m => ({ ...m, account })));
}
9. Advanced Email Analytics Dashboard
Problem: No insights into email patterns with sophisticated filtering Solution: Custom email analytics using advanced search capabilities
// Generate comprehensive email analytics using advanced search
const analytics = {};
// Analyze email volume by sender domain
const messages = await fetch('/v1/messages');
analytics.senderDomains = analyzeSenderDomains(messages);
// Find large attachments consuming storage
const largeAttachments = await fetch('/v1/messages?has_attachments=true&min_size=1000000');
analytics.storageHogs = largeAttachments.map(msg => ({
subject: msg.subject,
from: msg.from,
size: msg.size
}));
// Analyze communication patterns with VIPs
const vipEmails = await fetch('/v1/messages?from=ceo@company.com');
const urgentVipEmails = await fetch('/v1/messages?from=ceo@company.com&subject=urgent');
analytics.vipCommunication = {
total: vipEmails.length,
urgent: urgentVipEmails.length,
urgencyRate: (urgentVipEmails.length / vipEmails.length) * 100
};
// Find unread emails by date range for follow-up
const lastWeek = new Date(Date.now() - 7 * 24 * 60 * 60 * 1000).toISOString();
const unreadRecent = await fetch(`/v1/messages?is_unread=true&since=${lastWeek}`);
analytics.followUpNeeded = unreadRecent.length;
// Analyze email sizes for optimization
const smallEmails = await fetch('/v1/messages?max_size=1000');
const mediumEmails = await fetch('/v1/messages?min_size=1000&max_size=50000');
const largeEmails = await fetch('/v1/messages?min_size=50000');
analytics.sizeDistribution = {
small: smallEmails.length,
medium: mediumEmails.length,
large: largeEmails.length
};
// Search for compliance-related emails
const complianceEmails = await fetch('/v1/messages?body=confidential&has_attachments=true');
analytics.complianceReview = complianceEmails.length;
10. Smart Email Archiving
Problem: Manual email organization Solution: Intelligent email categorization
// Auto-archive old emails by category
const messages = await fetch('/v1/messages');
const oldEmails = messages.filter(email =>
isOlderThan(email.date, 90) // 90 days
);
for (const email of oldEmails) {
const category = categorizeEmail(email);
await fetch(`/v1/messages/${email.id}`, {
method: 'PUT',
body: JSON.stringify({ folder: `Archive/${category}` })
});
}
11. Email-to-Calendar Integration
Problem: Manual calendar event creation from emails Solution: Automatic event extraction and creation
// Extract meeting details from emails
const messages = await fetch('/v1/messages?folder=Meetings');
const meetingEmails = messages.filter(email =>
email.subject.toLowerCase().includes('meeting')
);
for (const email of meetingEmails) {
const meetingData = extractMeetingInfo(email.text);
if (meetingData.date && meetingData.time) {
await fetch('/v1/calendars', {
method: 'POST',
body: JSON.stringify({
title: email.subject,
start: meetingData.datetime,
attendees: [email.from, ...email.to]
})
});
}
}
12. E-Mail-Backup und Compliance
Problem: E-Mail-Aufbewahrung und Compliance-Anforderungen
Lösung: Automatisiertes Backup mit Metadaten-Erhaltung
// Backup von E-Mails mit vollständigen Metadaten
const allMessages = await fetch('/v1/messages');
const backup = {
timestamp: new Date(),
messages: allMessages.map(msg => ({
id: msg.id,
subject: msg.subject,
from: msg.from,
to: msg.to,
date: msg.date,
flags: msg.flags
}))
};
await saveToComplianceStorage(backup);
13. E-Mail-basiertes Content-Management
Problem: Verwaltung von Inhaltseinreichungen per E-Mail für CMS-Plattformen
Lösung: E-Mail als Content-Management-System
// Verarbeitung von Inhaltseinreichungen per E-Mail
const messages = await fetch('/v1/messages?folder=Submissions');
const submissions = messages.filter(msg =>
msg.to.some(addr => addr.includes('submit@'))
);
for (const submission of submissions) {
const content = parseSubmission(submission.text);
await cms.createDraft({
title: submission.subject,
content: content.body,
author: submission.from
});
}
14. Verwaltung von E-Mail-Vorlagen
Problem: Inkonsistente E-Mail-Vorlagen im Team
Lösung: Zentralisiertes Vorlagensystem mit API
// Versand von E-Mails mit Vorlagen und dynamischem Inhalt
const template = await getEmailTemplate('welcome');
await fetch('/v1/messages', {
method: 'POST',
body: JSON.stringify({
to: [{ address: newUser.email }],
subject: template.subject.replace('{{name}}', newUser.name),
html: template.html.replace('{{name}}', newUser.name),
folder: 'Sent'
})
});
15. E-Mail-basierte Workflow-Automatisierung
Problem: Manuelle Genehmigungsprozesse per E-Mail
Lösung: Automatisierte Workflow-Auslöser
// Verarbeitung von Genehmigungs-E-Mails
const messages = await fetch('/v1/messages?folder=Approvals');
const approvals = messages.filter(msg =>
msg.subject.includes('APPROVAL')
);
for (const approval of approvals) {
const decision = parseApprovalDecision(approval.text);
await workflow.processApproval({
requestId: extractRequestId(approval.subject),
decision: decision,
approver: approval.from
});
}
16. Überwachung der E-Mail-Sicherheit
Problem: Manuelle Erkennung von Sicherheitsbedrohungen
Lösung: Automatisierte Bedrohungsanalyse
// Überwachung auf verdächtige E-Mails
const recentEmails = await fetch('/v1/messages');
for (const email of recentEmails) {
const threatScore = analyzeThreat(email);
if (threatScore > 0.8) {
await fetch(`/v1/messages/${email.id}`, {
method: 'PUT',
body: JSON.stringify({ folder: 'Security/Quarantine' })
});
await alertSecurityTeam(email);
}
}
17. E-Mail-basierte Umfrageerfassung
Problem: Manuelle Verarbeitung von Umfrageantworten
Lösung: Automatisierte Antwortaggregation
// Sammlung und Verarbeitung von Umfrageantworten
const messages = await fetch('/v1/messages?folder=Surveys');
const responses = messages.filter(msg =>
msg.subject.includes('Survey Response')
);
const surveyData = responses.map(email => ({
respondent: email.from,
responses: parseSurveyData(email.text),
timestamp: email.date
}));
await updateSurveyResults(surveyData);
18. Überwachung der E-Mail-Leistung
Problem: Keine Transparenz bei der E-Mail-Zustellungsleistung
Lösung: Echtzeit-E-Mail-Metriken
// Überwachung der E-Mail-Zustellungsleistung
const sentEmails = await fetch('/v1/messages?folder=Sent');
const deliveryStats = {
sent: sentEmails.length,
bounces: await countBounces(),
deliveryRate: calculateDeliveryRate()
};
await updateDashboard(deliveryStats);
19. E-Mail-basierte Lead-Qualifizierung
Problem: Manuelles Lead Scoring anhand von E-Mail-Interaktionen
Lösung: Automatisierte Lead-Qualifizierungs-Pipeline
// Score leads based on email engagement
const prospects = await fetch('/v1/contacts');
for (const prospect of prospects) {
const messages = await fetch('/v1/messages');
const emails = messages.filter(msg =>
msg.from.includes(prospect.email)
);
const score = calculateEngagementScore(emails);
await crm.updateLeadScore(prospect.id, score);
}
20. E-Mail-basiertes Projektmanagement
Problem: Projektupdates verstreut über E-Mail-Threads
Lösung: Zentraler Kommunikations-Hub für Projekte
// Extract project updates from emails
const messages = await fetch('/v1/messages?folder=Projects');
const projectEmails = messages.filter(msg =>
msg.subject.includes('Project Update')
);
for (const email of projectEmails) {
const update = parseProjectUpdate(email.text);
await projectManager.addUpdate({
project: update.projectId,
author: email.from,
content: update.content
});
}
21. E-Mail-basierte Bestandsverwaltung
Problem: Manuelle Bestandsaktualisierungen aus Lieferanten-E-Mails
Lösung: Automatisierte Bestandsverfolgung aus E-Mail-Benachrichtigungen
// Process inventory updates from supplier emails
const messages = await fetch('/v1/messages?folder=Suppliers');
const inventoryEmails = messages.filter(msg =>
msg.subject.includes('Inventory Update') || msg.subject.includes('Stock Alert')
);
for (const email of inventoryEmails) {
const inventoryData = parseInventoryUpdate(email.text);
await inventory.updateStock({
sku: inventoryData.sku,
quantity: inventoryData.quantity,
supplier: email.from,
timestamp: email.date
});
// Move to processed folder
await fetch(`/v1/messages/${email.id}`, {
method: 'PUT',
body: JSON.stringify({ folder: 'Suppliers/Processed' })
});
}
22. E-Mail-basierte Rechnungsverarbeitung
Problem: Manuelle Rechnungsverarbeitung und Buchhaltungsintegration
Lösung: Automatisierte Rechnungsextraktion und Synchronisation mit dem Buchhaltungssystem
// Extract invoice data from email attachments
const messages = await fetch('/v1/messages?folder=Invoices');
const invoiceEmails = messages.filter(msg =>
msg.subject.toLowerCase().includes('invoice') && msg.attachments.length > 0
);
for (const email of invoiceEmails) {
const invoiceData = await extractInvoiceData(email.attachments[0]);
await accounting.createInvoice({
vendor: email.from,
amount: invoiceData.total,
dueDate: invoiceData.dueDate,
items: invoiceData.lineItems
});
// Flag as processed
await fetch(`/v1/messages/${email.id}`, {
method: 'PUT',
body: JSON.stringify({ flags: ['\\Seen', '\\Flagged'] })
});
}
23. E-Mail-basierte Veranstaltungsregistrierung
Problem: Manuelle Veranstaltungsregistrierung aus E-Mail-Antworten
Lösung: Automatisiertes Teilnehmermanagement und Kalenderintegration
// Process event registration emails
const messages = await fetch('/v1/messages?folder=Events');
const registrations = messages.filter(msg =>
msg.subject.includes('Registration') || msg.subject.includes('RSVP')
);
for (const registration of registrations) {
const attendeeData = parseRegistration(registration.text);
// Add to attendee list
await events.addAttendee({
event: attendeeData.eventId,
name: attendeeData.name,
email: registration.from,
dietary: attendeeData.dietaryRestrictions
});
// Create calendar event for attendee
await fetch('/v1/calendars', {
method: 'POST',
body: JSON.stringify({
title: attendeeData.eventName,
start: attendeeData.eventDate,
attendees: [registration.from]
})
});
}
24. E-Mail-basierter Dokumentenfreigabe-Workflow
Problem: Komplexe Dokumentenfreigabe-Ketten per E-Mail
Lösung: Automatisierte Nachverfolgung der Freigaben und Versionierung von Dokumenten
// Track document approval workflow
const messages = await fetch('/v1/messages?folder=Approvals');
const approvalEmails = messages.filter(msg =>
msg.subject.includes('Document Approval')
);
for (const email of approvalEmails) {
const approval = parseApprovalEmail(email.text);
await documentSystem.updateApproval({
documentId: approval.documentId,
approver: email.from,
status: approval.decision, // 'approved', 'rejected', 'needs_changes'
comments: approval.comments,
timestamp: email.date
});
// Check if all approvals complete
const document = await documentSystem.getDocument(approval.documentId);
if (document.allApprovalsComplete) {
await documentSystem.finalizeDocument(approval.documentId);
}
}
25. E-Mail-basierte Kundenfeedback-Analyse
Problem: Manuelle Kundenfeedback-Erfassung und Sentiment-Analyse
Lösung: Automatisierte Feedback-Verarbeitung und Sentiment-Nachverfolgung
// Analyze customer feedback from emails
const messages = await fetch('/v1/messages?folder=Feedback');
const feedbackEmails = messages.filter(msg =>
msg.to.some(addr => addr.includes('feedback@'))
);
for (const email of feedbackEmails) {
const sentiment = await analyzeSentiment(email.text);
const category = categorizeFeeback(email.text);
await feedback.recordFeedback({
customer: email.from,
content: email.text,
sentiment: sentiment.score, // -1 to 1
category: category, // 'bug', 'feature', 'complaint', 'praise'
priority: calculatePriority(sentiment, category),
timestamp: email.date
});
// Auto-escalate negative feedback
if (sentiment.score < -0.5) {
await escalateToSupport(email);
}
}
26. E-Mail-basierte Recruiting-Pipeline
Problem: Manuelle Rekrutierung und Kandidatenverfolgung
Lösung: Automatisiertes Kandidatenmanagement und Interviewplanung
// Process job application emails
const messages = await fetch('/v1/messages?folder=Careers');
const applications = messages.filter(msg =>
msg.subject.toLowerCase().includes('application') && msg.attachments.length > 0
);
for (const application of applications) {
const resume = await parseResume(application.attachments[0]);
const candidate = await ats.createCandidate({
name: resume.name,
email: application.from,
skills: resume.skills,
experience: resume.experience,
position: extractPosition(application.subject)
});
// Auto-schedule screening if qualified
if (candidate.qualificationScore > 0.7) {
await calendar.scheduleInterview({
candidateId: candidate.id,
type: 'phone_screening',
duration: 30
});
}
}
27. E-Mail-basierte Spesenabrechnungsverarbeitung
Problem: Manuelle Spesenabrechnung-Einreichung und Freigabe
Lösung: Automatisierte Spesenerfassung und Freigabeworkflow
// Process expense report emails
const messages = await fetch('/v1/messages?folder=Expenses');
const expenseEmails = messages.filter(msg =>
msg.subject.includes('Expense') && msg.attachments.length > 0
);
for (const email of expenseEmails) {
const receipts = await processReceipts(email.attachments);
const expenseReport = await expenses.createReport({
employee: email.from,
expenses: receipts.map(receipt => ({
amount: receipt.total,
category: receipt.category,
date: receipt.date,
merchant: receipt.merchant
})),
totalAmount: receipts.reduce((sum, r) => sum + r.total, 0)
});
// Auto-approve small amounts
if (expenseReport.totalAmount < 100) {
await expenses.approve(expenseReport.id);
} else {
await expenses.sendForApproval(expenseReport.id);
}
}
28. E-Mail-basierte Qualitätssicherungsberichte
Problem: Manuelle Qualitätssicherung Fehlerverfolgung
Lösung: Automatisiertes QA-Fehlermanagement und Bug-Tracking
// Process QA bug reports from email
const messages = await fetch('/v1/messages?folder=QA');
const bugReports = messages.filter(msg =>
msg.subject.includes('Bug Report') || msg.subject.includes('QA Issue')
);
for (const report of bugReports) {
const bugData = parseBugReport(report.text);
const ticket = await bugTracker.createIssue({
title: report.subject,
description: bugData.description,
severity: bugData.severity,
steps: bugData.stepsToReproduce,
reporter: report.from,
attachments: report.attachments
});
// Auto-assign based on component
const assignee = await getComponentOwner(bugData.component);
await bugTracker.assign(ticket.id, assignee);
// Create calendar reminder for follow-up
await fetch('/v1/calendars', {
method: 'POST',
body: JSON.stringify({
title: `Follow up on ${ticket.id}`,
start: addDays(new Date(), 3),
attendees: [assignee]
})
});
}
29. E-Mail-basierte Lieferantenverwaltung
Problem: Manuelle Lieferantenkommunikation und Vertragsverfolgung
Lösung: Automatisiertes Lieferantenbeziehungsmanagement
// Track vendor communications and contracts
const messages = await fetch('/v1/messages?folder=Vendors');
const vendorEmails = messages.filter(msg =>
isVendorEmail(msg.from)
);
for (const email of vendorEmails) {
const vendor = await vendors.getByEmail(email.from);
// Log communication
await vendors.logCommunication({
vendorId: vendor.id,
type: 'email',
subject: email.subject,
content: email.text,
timestamp: email.date
});
// Check for contract-related keywords
if (email.text.includes('contract') || email.text.includes('renewal')) {
await vendors.flagForContractReview({
vendorId: vendor.id,
emailId: email.id,
priority: 'high'
});
// Create task for procurement team
await tasks.create({
title: `Review contract communication from ${vendor.name}`,
assignee: 'procurement@company.com',
dueDate: addDays(new Date(), 2)
});
}
}
30. E-Mail-basierte Social-Media-Überwachung
Problem: Manuelle Social-Media Erwähnungsüberwachung und Reaktion
Lösung: Automatisierte Verarbeitung von Social-Media-Benachrichtigungen und Koordination der Reaktion
// Process social media alerts from email notifications
const messages = await fetch('/v1/messages?folder=Social');
const socialAlerts = messages.filter(msg =>
msg.from.includes('alerts@') || msg.subject.includes('Social Mention')
);
for (const alert of socialAlerts) {
const mention = parseSocialMention(alert.text);
await socialMedia.recordMention({
platform: mention.platform,
author: mention.author,
content: mention.content,
sentiment: mention.sentiment,
reach: mention.followerCount,
url: mention.url
});
// Auto-escalate negative mentions with high reach
if (mention.sentiment < -0.5 && mention.followerCount > 10000) {
await socialMedia.escalateToTeam({
mentionId: mention.id,
priority: 'urgent',
assignee: 'social-media-manager@company.com'
});
// Create calendar reminder for immediate response
await fetch('/v1/calendars', {
method: 'POST',
body: JSON.stringify({
title: `Urgent: Respond to negative social mention`,
start: addMinutes(new Date(), 30),
attendees: ['social-media-manager@company.com']
})
});
}
}
Erste Schritte
1. Erstellen Sie Ihr Weiterleitungs-E-Mail-Konto
Melden Sie sich bei forwardemail.net an und verifizieren Sie Ihre Domain.
2. API-Zugangsdaten generieren
Ihre Alias-E-Mail und Ihr Passwort dienen als API-Zugangsdaten – keine weitere Einrichtung erforderlich.
3. Machen Sie Ihren ersten API-Aufruf
# Listen Sie Ihre Nachrichten auf
curl -u "your-alias@domain.com:password" \
https://api.forwardemail.net/v1/messages
# Erstellen Sie einen neuen Kontakt
curl -u "your-alias@domain.com:password" \
-X POST \
-H "Content-Type: application/json" \
-d '{"fullName":"John Doe","emails":[{"value":"john@example.com"}]}' \
https://api.forwardemail.net/v1/contacts
4. Erkunden Sie die Dokumentation
Besuchen Sie forwardemail.net/en/email-api für die vollständige API-Dokumentation mit interaktiven Beispielen.
Technische Ressourcen
- Vollständige API-Dokumentation - Interaktive OpenAPI 3.0 Spezifikation
- Self-Hosting-Anleitung - Setzen Sie Forward Email auf Ihrer Infrastruktur ein
- Sicherheits-Whitepaper - Technische Architektur und Sicherheitsdetails
- GitHub Repository - Open-Source-Codebasis
- Entwickler-Support - Direkter Zugang zu unserem Engineering-Team
Bereit, Ihre E-Mail-Integration zu revolutionieren? Beginnen Sie noch heute mit der Entwicklung mit der API von Forward Email und erleben Sie die erste vollständige E-Mail-Management-Plattform, die für Entwickler entwickelt wurde.
Forward Email: Der E-Mail-Dienst, der APIs endlich richtig macht.