Az első teljes körű e-mail API: Hogyan forradalmasította a Forward Email az e-mail kezelést
Röviden: Megalkottuk a világ első teljes körű REST API-ját e-mail kezeléshez, fejlett keresési lehetőségekkel, amelyeket más szolgáltatás nem kínál. Míg a Gmail, Outlook és Apple az IMAP poklába vagy korlátozott API-kba kényszeríti a fejlesztőket, a Forward Email villámgyors CRUD műveleteket biztosít üzenetek, mappák, névjegyek és naptárak számára egy egységes REST interfészen keresztül, több mint 15 keresési paraméterrel. Ez az az e-mail API, amire a fejlesztők vártak.
Az Email API Probléma
Az email API-k alapvetően hibásak. Pont.
Minden nagy email szolgáltató két szörnyű választás egyikére kényszeríti a fejlesztőket:
- IMAP Pokol: Egy 30 éves protokollal küzdeni, amely asztali kliensekhez készült, nem modern alkalmazásokhoz
- Megnyomorított API-k: Korlátozott, csak olvasható, OAuth-komplex API-k, amelyek nem tudják kezelni a tényleges email adataidat
Az eredmény? A fejlesztők vagy teljesen feladják az email integrációt, vagy heteket pazarolnak törékeny IMAP csomagolók építésére, amelyek folyamatosan elromlanak.
Warning
A piszkos titok: A legtöbb "email API" valójában csak küldő API. Nem tudsz programozottan mappákat rendezni, névjegyeket szinkronizálni vagy naptárakat kezelni egy egyszerű REST interfészen keresztül. Egészen mostanáig.
Amit a Fejlesztők Valójában Mondanak
A frusztráció valós és mindenhol dokumentált:
"Nemrég próbáltam integrálni a Gmailt az alkalmazásomba, és túl sok időt öntöttem bele. Úgy döntöttem, nem éri meg támogatni a Gmailt."
- Hacker News fejlesztő, 147 szavazat
"Minden email API középszerű? Úgy tűnik, valamilyen módon korlátozottak vagy restriktívek."
"Miért kell az email fejlesztésnek szívásnak lennie?"
- Reddit r/webdev, 89 hozzászólás fejlesztői fájdalomról
"Mi teszi a Gmail API-t hatékonyabbá az IMAP-nál? Egy másik ok, amiért a Gmail API sokkal hatékonyabb, hogy csak egyszer kell letölteni minden üzenetet. IMAP esetén minden üzenetet le kell tölteni és indexelni..."
- Stack Overflow kérdés 47 szavazattal
A bizonyíték mindenhol ott van:
- WordPress SMTP problémák: 631 GitHub issue az email kézbesítési hibákról
- Zapier korlátok: Közösségi panaszok 10 email/óra limitről és IMAP felismerési hibákról
- IMAP API projektek: Több nyílt forráskódú projekt létezik kifejezetten az "IMAP REST-re konvertálására", mert ezt egyetlen szolgáltató sem kínálja
- Gmail API frusztrációk: A Stack Overflow 4,847 "gmail-api" címkével ellátott kérdése gyakori panaszokkal a korlátozásokról és a komplexitásról
A Forward Email Forradalmi Megoldása
Mi vagyunk az első email szolgáltatás, amely teljes CRUD műveleteket kínál az összes email adatodra egy egységes REST API-n keresztül.
Ez nem csak egy újabb küldő API. Ez teljes programozott irányítás a következő felett:
- Üzenetek: Létrehozás, olvasás, frissítés, törlés, keresés, mozgatás, megjelölés
- Mappák: Teljes IMAP mappa kezelés REST végpontokon keresztül
- Névjegyek: CardDAV névjegy tárolás és szinkronizáció
- Naptárak: CalDAV naptár események és ütemezés
Miért Építettük Ezt
A Probléma: Minden email szolgáltató fekete dobozként kezeli az emailt. Tudsz emailt küldeni, talán olvasni bonyolult OAuth-pal, de nem tudod igazán kezelni az email adataidat programozottan.
A Látomásunk: Az email integráció legyen olyan egyszerű, mint bármely modern API. Nincs IMAP könyvtár. Nincs OAuth komplexitás. Nincsenek korlátozási rémálmok. Csak egyszerű REST végpontok, amelyek működnek.
Az Eredmény: Az első email szolgáltatás, ahol teljes email klienst, CRM integrációt vagy automatizációs rendszert építhetsz kizárólag HTTP kérésekkel.
Egyszerű Hitelesítés
Nincs OAuth komplexitás. Nincsenek alkalmazás-specifikus jelszavak. Csak az alias hitelesítő adataid:
curl -u "alias@yourdomain.com:password" \
https://api.forwardemail.net/v1/messages
20 Végpont, Ami Minden Megváltoztat
Üzenetek (5 végpont)
GET /v1/messages- Üzenetek listázása szűréssel (?folder=,?is_unread=,?is_flagged=)POST /v1/messages- Új üzenetek küldése közvetlenül mappákbaGET /v1/messages/:id- Egy adott üzenet lekérése teljes metaadatokkalPUT /v1/messages/:id- Üzenet frissítése (jelölők, mappa, olvasottság)DELETE /v1/messages/:id- Üzenet végleges törlése
Mappák (5 végpont)
GET /v1/folders- Mappák listázása előfizetési státusszalPOST /v1/folders- Új mappa létrehozása egyedi tulajdonságokkalGET /v1/folders/:id- Mappa részleteinek és üzenetszámok lekérésePUT /v1/folders/:id- Mappa tulajdonságainak és előfizetésének frissítéseDELETE /v1/folders/:id- Mappa törlése és az üzenetek áthelyezésének kezelése
Kapcsolatok (5 végpont)
GET /v1/contacts- Kapcsolatok listázása kereséssel és lapozássalPOST /v1/contacts- Új kapcsolat létrehozása teljes vCard támogatássalGET /v1/contacts/:id- Kapcsolat lekérése minden mezővel és metaadattalPUT /v1/contacts/:id- Kapcsolati adatok frissítése ETag érvényesítésselDELETE /v1/contacts/:id- Kapcsolat törlése kaszkád kezeléssel
Naptárak (5 végpont)
GET /v1/calendars- Naptári események listázása dátumszűrésselPOST /v1/calendars- Naptári esemény létrehozása résztvevőkkel és ismétlődésselGET /v1/calendars/:id- Esemény részleteinek lekérése időzóna kezelésselPUT /v1/calendars/:id- Esemény frissítése ütközésészlelésselDELETE /v1/calendars/:id- Esemény törlése résztvevő értesítésekkel
Fejlett Keresés: Egyik Szolgáltatás Sem Érhet Hozzánk
A Forward Email az egyetlen e-mail szolgáltatás, amely átfogó, programozható keresést kínál az összes üzenetmezőn keresztül REST API-n.
Míg más szolgáltatók legfeljebb alap szűrést kínálnak, mi építettük a valaha volt legfejlettebb e-mail kereső API-t. Sem a Gmail API, sem az Outlook API, sem más szolgáltatás nem ér fel a keresési képességeinkhez.
A Kereső API Helyzete Szétesett
Gmail API Keresési Korlátozások:
- ✅ Csak alap
qparaméter - ❌ Nincs mezőspecifikus keresés
- ❌ Nincs dátumtartomány szűrés
- ❌ Nincs méret alapú szűrés
- ❌ Nincs csatolmány szűrés
- ❌ Csak a Gmail keresési szintaxis korlátozott használata
Outlook API Keresési Korlátozások:
- ✅ Alap
$searchparaméter - ❌ Nincs fejlett mezőcélzás
- ❌ Nincs összetett lekérdezés kombináció
- ❌ Aggresszív sebességkorlátozás
- ❌ Bonyolult OData szintaxis szükséges
Apple iCloud:
- ❌ Egyáltalán nincs API
- ❌ Csak IMAP keresés (ha működésre bírja az ember)
ProtonMail & Tuta:
- ❌ Nincs nyilvános API
- ❌ Nincs programozható keresési lehetőség
A Forward Email Forradalmi Kereső API-ja
15+ keresési paramétert kínálunk, amit más szolgáltatás nem nyújt:
| Keresési Képesség | Forward Email | Gmail API | Outlook API | Egyéb |
|---|---|---|---|---|
| Mezőspecifikus Keresés | ✅ Tárgy, törzs, feladó, címzett, másolat, fejléc | ❌ | ❌ | ❌ |
| Többmezős Általános Keresés | ✅ ?search= az összes mezőn át |
✅ Alap q= |
✅ Alap $search= |
❌ |
| Dátumtartomány Szűrés | ✅ ?since= & ?before= |
❌ | ❌ | ❌ |
| Méret Alapú Szűrés | ✅ ?min_size= & ?max_size= |
❌ | ❌ | ❌ |
| Csatolmány Szűrés | ✅ ?has_attachments=true/false |
❌ | ❌ | ❌ |
| Fejléc Keresés | ✅ ?headers=X-Priority |
❌ | ❌ | ❌ |
| Üzenetazonosító Keresés | ✅ ?message_id=abc123 |
❌ | ❌ | ❌ |
| Összetett Szűrők | ✅ Több paraméter AND logikával | ❌ | ❌ | ❌ |
| Nagybetű-Kisbetű Érzéketlen | ✅ Minden keresés | ✅ | ✅ | ❌ |
| Lapozás Támogatás | ✅ Minden keresési paraméterrel működik | ✅ | ✅ | ❌ |
Valós Példák Keresésre
Az elmúlt negyedév összes számlájának megtalálása:
# Forward Email - Egyszerű és hatékony
GET /v1/messages?subject=invoice&since=2024-01-01T00:00:00Z&before=2024-04-01T00:00:00Z
# Gmail API - Lehetetlen a korlátozott keresési lehetőségeik miatt
# Nincs elérhető dátumtartomány szűrés
# Outlook API - Bonyolult OData szintaxis, korlátozott funkcionalitás
GET /me/messages?$search="invoice"&$filter=receivedDateTime ge 2024-01-01T00:00:00Z
Nagy méretű csatolmányok keresése adott feladótól:
# Forward Email - Átfogó szűrés
GET /v1/messages?from=finance@company.com&has_attachments=true&min_size=1000000
# Gmail API - Nem lehet programozottan méret vagy csatolmány alapján szűrni
# Outlook API - Nincs méret szerinti szűrés
# Egyéb - Nincs elérhető API
Összetett, több mezős keresés:
# Forward Email - Fejlett lekérdezési képességek
GET /v1/messages?body=quarterly&from=manager&is_flagged=true&folder=Reports
# Gmail API - Csak alap szöveges keresés lehetséges
GET /gmail/v1/users/me/messages?q=quarterly
# Outlook API - Alap keresés mezőcélzás nélkül
GET /me/messages?$search="quarterly"
Teljesítmény Előnyök
Forward Email keresési teljesítmény:
- ⚡ 100 ms alatti válaszidők összetett kereséseknél
- 🔍 Regex optimalizáció megfelelő indexeléssel
- 📊 Párhuzamos lekérdezés végrehajtás számláláshoz és adatokhoz
- 💾 Hatékony memóriahasználat karcsú lekérdezésekkel
Versenytársak teljesítményproblémái:
- 🐌 Gmail API: Felhasználónként másodpercenként 250 kvótaegységre korlátozva
- 🐌 Outlook API: Aggresszív korlátozás, bonyolult visszalépési szabályokkal
- 🐌 Egyéb: Nincs összehasonlítható API
Egyedi Keresési Funkciók, Amik Másnak Nincsenek
1. Fejléc-specifikus keresés
# Üzenetek keresése adott fejléc alapján
GET /v1/messages?headers=X-Priority:1
GET /v1/messages?headers=X-Spam-Score
2. Méret alapú intelligencia
# Hírlevelek keresése (általában nagy méretűek)
GET /v1/messages?min_size=50000&from=newsletter
# Gyors válaszok keresése (általában kicsik)
GET /v1/messages?max_size=1000&to=support
3. Csatolmány-alapú munkafolyamatok
# Minden dokumentum keresése, amit a jogi csapatnak küldtek
GET /v1/messages?to=legal&has_attachments=true&body=contract
# Csatolmány nélküli emailek keresése takarításhoz
GET /v1/messages?has_attachments=false&before=2023-01-01T00:00:00Z
4. Kombinált üzleti logika
# Sürgős, megjelölt üzenetek keresése VIP feladóktól csatolmányokkal
GET /v1/messages?is_flagged=true&from=ceo&has_attachments=true&subject=urgent
Miért Fontos Ez a Fejlesztők Számára
Olyan alkalmazások építése, amik korábban lehetetlenek voltak:
- Fejlett email elemzés: Email minták elemzése méret, feladó, tartalom alapján
- Intelligens email kezelés: Automatikus rendszerezés összetett feltételek alapján
- Megfelelőség és feltárás: Specifikus emailek megtalálása jogi követelményekhez
- Üzleti intelligencia: Információk kinyerése email kommunikációs mintákból
- Automatizált munkafolyamatok: Műveletek indítása kifinomult email szűrők alapján
A Technikai Megvalósítás
Keresési API-nk használja:
- Regex optimalizációt megfelelő indexelési stratégiákkal
- Párhuzamos végrehajtást a teljesítményért
- Bemeneti érvényesítést a biztonságért
- Átfogó hibakezelést a megbízhatóságért
// Példa: Összetett keresés megvalósítása
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' } }
]
});
}
// Kombinálás ÉS logikával
if (searchConditions.length > 0) {
query.$and = searchConditions;
}
Tip
Fejlesztői előny: A Forward Email keresési API-jával olyan email alkalmazásokat építhetsz, amelyek funkcionalitásban vetekednek az asztali kliensekkel, miközben megőrzik a REST API-k egyszerűségét.
Villámgyors Teljesítmény Architektúra
Műszaki stackünk a sebességre és megbízhatóságra épül:
Teljesítmény Referenciák
Miért vagyunk villámgyorsak:
| Összetevő | Technológia | Teljesítmény Előny |
|---|---|---|
| Tárolás | NVMe SSD | 10x gyorsabb, mint a hagyományos SATA |
| Adatbázis | SQLite + msgpackr | Nulla hálózati késleltetés, optimalizált sorosítás |
| Hardver | AMD Ryzen natív | Nincs virtualizációs többletterhelés |
| Gyorsítótár | Memóriában + perzisztens | Szubmilliszekundumos válaszidők |
| Biztonsági mentések | Cloudflare R2 titkosított | Vállalati szintű megbízhatóság |
Valódi Teljesítmény Számok:
- API válaszidő: < 50ms átlag
- Üzenet lekérés: < 10ms gyorsítótárazott üzeneteknél
- Mappaműveletek: < 5ms metaadat műveleteknél
- Kapcsolat szinkronizálás: 1000+ kapcsolat/másodperc
- Üzemidő: 99,99% SLA redundáns infrastruktúrával
Adatvédelmi Központú Architektúra
Zero-Knowledge Tervezés: Csak Ön fér hozzá az IMAP jelszavával – mi nem olvassuk az e-mailjeit. A zero-knowledge architektúránk teljes adatvédelmet biztosít, miközben villámgyors teljesítményt nyújt.
Miért Vagyunk Mások: Teljes Összehasonlítás
Fő Szolgáltató Korlátozások
Előnyök az Email Továbbításban
| Jellemző | Email Továbbítás | Versenytársak |
|---|---|---|
| Teljes CRUD | ✅ Teljes létrehozás, olvasás, frissítés, törlés minden adat esetén | ❌ Csak olvasás vagy korlátozott műveletek |
| Egységes API | ✅ Üzenetek, mappák, névjegyek, naptárak egy API-ban | ❌ Külön API-k vagy hiányzó funkciók |
| Egyszerű hitelesítés | ✅ Alap hitelesítés alias hitelesítő adatokkal | ❌ Bonyolult OAuth több jogosultsággal |
| Nincs korlátozás | ✅ Nagylelkű korlátok, valós alkalmazásokhoz tervezve | ❌ Korlátozó kvóták, amelyek megszakítják a munkafolyamatokat |
| Ön-tárhely | ✅ Teljes ön-tárhely opció | ❌ Csak szolgáltatófüggőség |
| Adatvédelem | ✅ Nulla tudás, titkosított, privát | ❌ Adatbányászat és adatvédelmi aggályok |
| Teljesítmény | ✅ 50 ms alatti válaszidő, NVMe tárolás | ❌ Hálózati késleltetés, korlátozások |
Az Nyílt Forráskódú Átláthatóság Problémája
A ProtonMail és a Tuta "nyílt forráskódúként" és "átláthatóként" hirdetik magukat, de ez félrevezető marketing, amely sérti a modern adatvédelmi elveket.
Warning
Hamis átláthatósági állítások: Mind a ProtonMail, mind a Tuta hangsúlyosan hirdeti "nyílt forráskódú" hitelességét, miközben legkritikusabb szerveroldali kódjuk zárt és tulajdonosi.
A ProtonMail megtévesztése:
- Állítások: "Mi nyílt forráskódúak vagyunk" kiemelten a marketingben
- Valóság: A szerverkód teljesen tulajdonosi – csak a kliensalkalmazások nyílt forráskódúak
- Hatás: A felhasználók nem ellenőrizhetik a szerveroldali titkosítást, adatkezelést vagy adatvédelmi állításokat
- Átláthatósági megsértés: Nincs mód az e-mail feldolgozó és tároló rendszerek auditálására
A Tuta félrevezető marketingje:
- Állítások: "Nyílt forráskódú e-mail" mint fő értékesítési pont
- Valóság: A háttérinfrastruktúra zárt forráskódú – csak a frontend elérhető
- Hatás: A tulajdonosi titkosítás megakadályozza a szabványos e-mail protokollokat (IMAP/SMTP)
- Zárolási stratégia: Egyedi titkosítás szolgáltatófüggőséget kényszerít
Miért fontos ez a modern adatvédelem szempontjából:
2025-ben az igazi adatvédelem teljes átláthatóságot követel meg. Amikor az e-mail szolgáltatók "nyílt forráskódúnak" mondják magukat, de elrejtik a szerverkódot:
- Ellenőrizhetetlen titkosítás: Nem auditálhatod, hogyan titkosítják az adataidat
- Rejtett adatkezelési gyakorlatok: A szerveroldali adatkezelés fekete doboz marad
- Bizalmi alapú biztonság: Hitelnélküli állításokat kell elfogadnod
- Szolgáltatófüggőség: A tulajdonosi rendszerek megakadályozzák az adathordozhatóságot
A Forward Email valódi átláthatósága:
- ✅ Teljes nyílt forráskód – szerver és kliens kód
- ✅ Ön-tárhely elérhető – saját példány futtatása
- ✅ Szabványos protokollok – IMAP, SMTP, CardDAV, CalDAV kompatibilitás
- ✅ Auditálható biztonság – minden kódsor ellenőrizhető
- ✅ Nincs szolgáltatófüggőség – a te adataid, a te irányításod
Tip
Az igazi nyílt forráskód azt jelenti, hogy minden állítást ellenőrizhetsz. A Forward Email-lel auditálhatod a titkosításunkat, áttekintheted az adatkezelést, és akár saját példányt is futtathatsz. Ez az igazi átláthatóság.
Több mint 30 valós integrációs példa
1. WordPress Kapcsolati Űrlap Fejlesztés
Probléma: WordPress SMTP konfigurációs hibák (631 GitHub probléma) Megoldás: Közvetlen API integráció teljesen megkerüli az SMTP-t
// WordPress kapcsolatfelvételi űrlap, amely a Kimenő mappába ment
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: 'Kapcsolatfelvételi űrlap: ' + formData.subject,
text: formData.message,
folder: 'Sent'
})
});
2. Zapier alternatíva e-mail automatizáláshoz
Probléma: Zapier 10 e-mail/óra korlátja és IMAP észlelési hibák Megoldás: Korlátlan automatizálás teljes e-mail vezérléssel
// E-mailek automatikus rendezése feladó domain alapján
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 szinkronizáció
Probléma: Manuális kapcsolattartás e-mail és CRM rendszerek között Megoldás: Kétirányú szinkronizáció CardDAV kapcsolati API-val
// Új e-mail kapcsolatok szinkronizálása a CRM-be
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-kereskedelmi rendelés feldolgozás
Probléma: Manuális rendelés e-mail feldolgozás e-kereskedelmi platformokon Megoldás: Automatizált rendeléskezelési folyamat
// Rendelés visszaigazoló e-mailek feldolgozása
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. Támogatási jegy integráció
Probléma: E-mail szálak szétszórva helpdesk platformokon Megoldás: Teljes e-mail szál követés
// Támogatási jegy létrehozása e-mail szálból
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. Hírlevél kezelő rendszer
Probléma: Korlátozott hírlevél platform integrációk Megoldás: Teljes előfizetői életciklus kezelése
// Hírlevél feliratkozások automatikus kezelése
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 alapú feladatkezelés
Probléma: Bejövő levelek túlterheltsége és feladatkövetés Megoldás: E-mailek átalakítása végrehajtható feladatokká
// 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 Biztonsági Mentés és Megfelelőség
Probléma: E-mail megőrzési és megfelelőségi követelmények
Megoldás: Automatikus biztonsági mentés metaadatok megőrzésével
// E-mailek biztonsági mentése teljes metaadatokkal
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 Alapú Tartalomkezelés
Probléma: Tartalom beküldések kezelése e-mailen keresztül CMS platformok számára
Megoldás: E-mail mint tartalomkezelő rendszer
// Tartalom beküldések feldolgozása e-mailből
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. E-mail Sablonkezelés
Probléma: Inkonzisztens e-mail sablonok a csapatban
Megoldás: Központosított sablonrendszer API-val
// Sablonosított e-mailek küldése dinamikus tartalommal
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 Alapú Munkafolyamat Automatizálás
Probléma: Manuális jóváhagyási folyamatok e-mailen keresztül
Megoldás: Automatizált munkafolyamat-indítók
// Jóváhagyási e-mailek feldolgozása
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. E-mail Biztonsági Megfigyelés
Probléma: Manuális biztonsági fenyegetés felismerés
Megoldás: Automatizált fenyegetés elemzés
// Gyanús e-mailek figyelése
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 Alapú Felmérés Gyűjtés
Probléma: Manuális felmérés válaszok feldolgozása
Megoldás: Automatikus válaszgyűjtés
// Felmérés válaszok gyűjtése és feldolgozása
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. E-mail Teljesítmény Figyelés
Probléma: Nincs átláthatóság az e-mail kézbesítési teljesítmény terén
Megoldás: Valós idejű e-mail mutatók
// E-mail kézbesítési teljesítmény figyelése
const sentEmails = await fetch('/v1/messages?folder=Sent');
const deliveryStats = {
sent: sentEmails.length,
bounces: await countBounces(),
deliveryRate: calculateDeliveryRate()
};
await updateDashboard(deliveryStats);
19. E-mail alapú lead minősítés
Probléma: Manuális lead scoring e-mail interakciókból
Megoldás: Automatikus lead minősítési folyamat
// 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 alapú projektmenedzsment
Probléma: Projektfrissítések szétszórva e-mail szálakban
Megoldás: Központosított projektkommunikációs központ
// 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 alapú készletkezelés
Probléma: Manuális készletfrissítés beszállítói e-mailekből
Megoldás: Automatikus készletkövetés e-mail értesítésekből
// 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 alapú számlafeldolgozás
Probléma: Manuális számlafeldolgozás és könyvelési integráció
Megoldás: Automatikus számla kinyerés és könyvelési rendszer szinkronizáció
// 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 alapú eseményregisztráció
Probléma: Manuális eseményregisztráció feldolgozás e-mail válaszokból
Megoldás: Automatikus résztvevőkezelés és naptár integráció
// 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 alapú dokumentum jóváhagyási munkafolyamat
Probléma: Bonyolult dokumentum jóváhagyási láncok e-mailen keresztül
Megoldás: Automatizált jóváhagyás követés és dokumentum verziókezelés
// 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 alapú ügyfél visszajelzés elemzés
Probléma: Manuális ügyfél visszajelzés gyűjtés és érzelem elemzés
Megoldás: Automatizált visszajelzés feldolgozás és érzelem követés
// 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 alapú toborzási folyamat
Probléma: Manuális toborzás és jelölt követés
Megoldás: Automatizált jelöltkezelés és interjú ütemezés
// 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 alapú költségelszámolás feldolgozás
Probléma: Manuális költségelszámolás benyújtás és jóváhagyás
Megoldás: Automatizált költség kinyerés és jóváhagyási munkafolyamat
// 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 alapú minőségbiztosítási jelentés
Probléma: Manuális minőségbiztosítás hibakövetés
Megoldás: Automatizált QA hibakezelés és hibakövetés
// 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 alapú beszállítókezelés
Probléma: Manuális beszállítói kommunikáció és szerződéskövetés
Megoldás: Automatizált beszállítói kapcsolatok kezelése
// 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 alapú közösségi média figyelés
Probléma: Manuális közösségi média említéskövetés és válaszadás
Megoldás: Automatizált közösségi média riasztások feldolgozása és válasz koordinációja
// 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']
})
});
}
}
Első lépések
1. Hozd létre az átirányító e-mail fiókodat
Regisztrálj a forwardemail.net oldalon, és igazold a domainedet.
2. Generáld le az API hitelesítő adatokat
Az alias e-mail címed és jelszavad szolgálnak API hitelesítő adatként – további beállítás nem szükséges.
3. Tegye meg az első API hívását
# Listázza az üzeneteit
curl -u "your-alias@domain.com:password" \
https://api.forwardemail.net/v1/messages
# Hozzon létre egy új kapcsolatot
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. Fedezze fel a dokumentációt
Látogasson el a forwardemail.net/en/email-api oldalra a teljes API dokumentációért interaktív példákkal.
Műszaki források
- Teljes API dokumentáció - Interaktív OpenAPI 3.0 specifikáció
- Önálló telepítési útmutató - Telepítse a Forward Email szolgáltatást a saját infrastruktúrájára
- Biztonsági fehér könyv - Műszaki architektúra és biztonsági részletek
- GitHub tárhely - Nyílt forráskódú kódalap
- Fejlesztői támogatás - Közvetlen kapcsolat a mérnöki csapatunkkal
Készen áll arra, hogy forradalmasítsa az e-mail integrációját? Kezdje el építeni a Forward Email API-jával még ma, és tapasztalja meg az első teljes körű e-mail kezelő platformot, amelyet kifejezetten fejlesztőknek terveztek.
Forward Email: Az e-mail szolgáltatás, amely végre jól kezeli az API-kat.