İlk Tam E-posta API'si: Forward E-posta, E-posta Yönetiminde Nasıl Devrim Yarattı?

ÖZET: Başka hiçbir hizmetin sunmadığı gelişmiş arama özelliklerine sahip, e-posta yönetimi için dünyanın ilk eksiksiz REST API'sini oluşturduk. Gmail, Outlook ve Apple, geliştiricileri IMAP cehennemine veya hız sınırlı API'lere zorlarken, Forward Email, 15'ten fazla arama parametresine sahip birleşik bir REST arayüzü aracılığıyla mesajlar, klasörler, kişiler ve takvimler için inanılmaz hızlı CRUD işlemleri sunar. İşte e-posta API'si geliştiricilerinin beklediği şey.

E-posta API Sorunu

E-posta API'leri temelden bozuk. Nokta.

Her büyük e-posta sağlayıcısı geliştiricileri iki korkunç seçimden birine zorluyor:

  1. IMAP Cehennemi: Modern uygulamalar için değil, masaüstü istemcileri için tasarlanmış 30 yıllık bir protokolle boğuşmak
  2. Çökmüş API'ler: Gerçek e-posta verilerinizi yönetemeyen, hız sınırlı, salt okunur, OAuth-karmaşık API'ler

Sonuç mu? Geliştiriciler ya e-posta entegrasyonunu tamamen terk ediyor ya da sürekli bozulan kırılgan IMAP paketleri oluşturmak için haftalarını harcıyor.

Warning

Kirli Sır: Çoğu "e-posta API'si" yalnızca gönderme API'leridir. Basit bir REST arayüzü üzerinden klasörleri programatik olarak düzenleyemez, kişileri senkronize edemez veya takvimleri yönetemezsiniz. Ta ki şimdiye kadar.

Geliştiricilerin Aslında Söyledikleri

Hayal kırıklığı gerçektir ve her yerde belgelenmiştir:

"Geçenlerde Gmail'i uygulamama entegre etmeye çalıştım ve çok fazla zaman harcadım. Gmail'i desteklemenin değmeyeceğine karar verdim."

- Hacker News geliştiricisi, 147 oy

"Tüm e-posta API'leri vasat mı? Bir şekilde sınırlı veya kısıtlayıcı görünüyorlar."

- Reddit r/SaaS tartışması

"E-posta geliştirme neden berbat olmak zorunda?"

- Reddit r/webdev, geliştirici sıkıntısına dair 89 yorum

"Gmail API'yi IMAP'den daha verimli kılan nedir? Gmail API'nin çok daha verimli olmasının bir diğer nedeni de her mesajı yalnızca bir kez indirmesi gerekmesidir. IMAP ile her mesajın indirilmesi ve dizine eklenmesi gerekir..."

- Stack Overflow sorusu 47 oy aldı

Kanıtlar her yerde:

  • WordPress SMTP sorunları: 631 GitHub sorunu e-posta teslim hataları hakkında
  • Zapier sınırlamaları: Topluluk şikayetleri yaklaşık 10 e-posta/saat sınırı ve IMAP algılama hataları
  • IMAP API projeleri: Çoklu açık kaynaklı projeler özellikle "IMAP'yi REST'e dönüştürmek" için mevcuttur çünkü hiçbir sağlayıcı bunu sunmaz
  • Gmail API sorunları: Stack Overflow, hız sınırları ve karmaşıklık hakkında yaygın şikayetleri olan "gmail-api" etiketli 4.847 soruya sahip

E-postayı İletmenin Devrim Niteliğindeki Çözümü

Tüm e-posta verileri için birleşik bir REST API aracılığıyla eksiksiz CRUD işlemleri sunan ilk e-posta hizmetiyiz.

Bu, sıradan bir gönderim API'si değil. Bu, aşağıdakiler üzerinde tam bir programatik kontroldür:

  • Mesajlar: Oluşturma, okuma, güncelleme, silme, arama, taşıma, işaretleme
  • Klasörler: REST uç noktaları aracılığıyla tam IMAP klasör yönetimi
  • Kişiler: CardDAV kişi depolama ve senkronizasyon
  • Takvimler: CalDAV takvim etkinlikleri ve planlama

Bunu Neden Oluşturduk?

Sorun: Her e-posta sağlayıcısı, e-postayı bir kara kutu olarak ele alır. E-posta gönderebilir, belki de karmaşık OAuth ile okuyabilirsiniz, ancak e-posta verilerinizi programatik olarak gerçek anlamda yönetemezsiniz.

Vizyonumuz: E-postanın, herhangi bir modern API kadar kolay entegre edilebilmesi gerekir. IMAP kütüphaneleri yok. OAuth karmaşıklığı yok. Hız sınırı kabusları yok. Sadece çalışan basit REST uç noktaları.

Sonuç: Sadece HTTP istekleri kullanarak eksiksiz bir e-posta istemcisi, CRM entegrasyonu veya otomasyon sistemi oluşturabileceğiniz ilk e-posta hizmeti.

Basit Kimlik Doğrulaması

OAuth karmaşıklığı yok. uygulamaya özel şifreler yok. Sadece takma ad bilgileriniz:

curl -u "alias@yourdomain.com:password" \
  https://api.forwardemail.net/v1/messages

Her Şeyi Değiştiren 20 Uç Nokta

Mesajlar (5 uç nokta)

  • GET /v1/messages - Filtrelemeli mesajları listele (?folder=, ?is_unread=, ?is_flagged=)
  • POST /v1/messages - Yeni mesajları doğrudan klasörlere gönder
  • GET /v1/messages/:id - Belirli bir mesajı tüm meta verileriyle al
  • PUT /v1/messages/:id - Mesajı güncelle (işaretler, klasör, okunma durumu)
  • DELETE /v1/messages/:id - Mesajı kalıcı olarak sil

Klasörler (5 uç nokta)

  • GET /v1/folders - Abonelik durumuna sahip tüm klasörleri listele
  • POST /v1/folders - Özel özelliklere sahip yeni klasör oluştur
  • GET /v1/folders/:id - Klasör ayrıntılarını ve mesaj sayılarını al
  • PUT /v1/folders/:id - Klasör özelliklerini ve aboneliği güncelle
  • DELETE /v1/folders/:id - Klasörü sil ve mesaj taşıma işlemini yönet

Kişiler (5 uç nokta)

  • GET /v1/contacts - Kişileri arama ve sayfalama ile listele
  • POST /v1/contacts - Tam vCard desteğiyle yeni kişi oluştur
  • GET /v1/contacts/:id - Kişiyi tüm alanları ve meta verileriyle al
  • PUT /v1/contacts/:id - Kişi bilgilerini ETag doğrulamasıyla güncelle
  • DELETE /v1/contacts/:id - Kişiyi kademeli işlemeyle sil

Takvimler (5 uç nokta)

  • GET /v1/calendars - Tarih filtrelemesiyle takvim etkinliklerini listele
  • POST /v1/calendars - Katılımcılar ve tekrarlama ile takvim etkinliği oluştur
  • GET /v1/calendars/:id - Saat dilimi işleme ile etkinlik ayrıntılarını al
  • PUT /v1/calendars/:id - Çakışma algılama ile etkinliği güncelle
  • DELETE /v1/calendars/:id - Katılımcı bildirimleri olan etkinliği sil

Gelişmiş Arama: Başka Hiçbir Hizmet {#advanced-search-no-other-service-compares} ile Karşılaştırılamaz

Forward Email, REST API aracılığıyla tüm mesaj alanlarında kapsamlı, programlı arama sunan tek e-posta hizmetidir.

Diğer sağlayıcılar en iyi ihtimalle temel filtreleme sunarken, biz şimdiye kadar oluşturulmuş en gelişmiş e-posta arama API'sini geliştirdik. Hiçbir Gmail API, Outlook API veya başka bir hizmet, arama yeteneklerimize yaklaşamaz.

Arama API Manzarası Bozuldu

Gmail API Arama Sınırlamaları:

  • ✅ Yalnızca temel q parametresi
  • ❌ Alana özgü arama yok
  • ❌ Tarih aralığı filtrelemesi yok
  • ❌ Boyuta dayalı filtreleme yok
  • ❌ Ek filtrelemesi yok
  • ❌ Gmail'in arama sözdizimiyle sınırlıdır

Outlook API Arama Sınırlamaları:

  • ✅ Temel $search parametresi
  • ❌ Gelişmiş alan hedeflemesi yok
  • ❌ Karmaşık sorgu kombinasyonları yok
  • ❌ Agresif hız sınırlaması
  • ❌ Karmaşık OData sözdizimi gerekli

Apple iCloud:

  • ❌ Hiçbir API yok
  • ❌ Yalnızca IMAP araması (çalışabilirseniz)

ProtonMail ve Tuta:

  • ❌ Genel API yok
  • ❌ Programatik arama yeteneği yok

E-postayı İletmenin Devrim Niteliğindeki Arama API'si

Başka hiçbir hizmetin sunmadığı 15'ten fazla arama parametresi sunuyoruz:

Arama Yeteneği E-postayı İlet Gmail API Outlook API Diğerleri
Alana Özel Arama ✅ Konu, gövde, kimden, kime, cc, başlıklar
Çok Alanlı Genel Arama ✅ Tüm alanlarda ?search= ✅ Temel HÜCRE_KODU_0 ✅ Temel HÜCRE_KODU_0
Tarih Aralığı Filtreleme ?since= & ?before=
Boyut Tabanlı Filtreleme ?min_size= & ?max_size=
Ek Filtreleme ?has_attachments=true/false
Başlık Araması ?headers=X-Priority
Mesaj Kimliği Arama ?message_id=abc123
Kombine Filtreler ✅ VE mantığıyla çoklu parametreler
Büyük-Küçük Harfe Duyarlı Değil ✅ Tüm aramalar
Sayfalandırma Desteği ✅ Tüm arama parametreleriyle çalışır

Gerçek Dünya Arama Örnekleri

Son Çeyreğe Ait Tüm Faturaları Bulun:

# Forward Email - Simple and powerful
GET /v1/messages?subject=invoice&since=2024-01-01T00:00:00Z&before=2024-04-01T00:00:00Z

# Gmail API - Impossible with their limited search
# No date range filtering available

# Outlook API - Complex OData syntax, limited functionality
GET /me/messages?$search="invoice"&$filter=receivedDateTime ge 2024-01-01T00:00:00Z

Belirli Bir Gönderenden Gelen Büyük Ekleri Ara:

# Forward Email - Comprehensive filtering
GET /v1/messages?from=finance@company.com&has_attachments=true&min_size=1000000

# Gmail API - Cannot filter by size or attachments programmatically
# Outlook API - No size filtering available
# Others - No APIs available

Karmaşık Çok Alanlı Arama:

# Forward Email - Advanced query capabilities
GET /v1/messages?body=quarterly&from=manager&is_flagged=true&folder=Reports

# Gmail API - Limited to basic text search only
GET /gmail/v1/users/me/messages?q=quarterly

# Outlook API - Basic search without field targeting
GET /me/messages?$search="quarterly"

Performans Avantajları

İletilmiş E-posta Arama Performansı:

  • ⚡ Karmaşık aramalar için 100 ms'nin altında yanıt süreleri
  • 🔍 Uygun indeksleme ile Regex optimizasyonu
  • 📊 Sayım ve veriler için Paralel sorgu yürütme
  • 💾 Yalın sorgularla Verimli bellek kullanımı

Rakip Performans Sorunları:

  • 🐌 Gmail API: Kullanıcı başına saniyede 250 kota birimiyle sınırlı oran
  • 🐌 Outlook API: Karmaşık geri çekilme gereksinimleriyle agresif kısıtlama
  • 🐌 Diğerleri: Karşılaştırılacak API yok

Başka Kimsede Olmayan Arama Özellikleri

# Find messages with specific headers
GET /v1/messages?headers=X-Priority:1
GET /v1/messages?headers=X-Spam-Score

2. Boyuta Dayalı Zeka

# Find newsletter emails (typically large)
GET /v1/messages?min_size=50000&from=newsletter

# Find quick replies (typically small)
GET /v1/messages?max_size=1000&to=support

3. Eklenti Tabanlı İş Akışları

# Find all documents sent to legal team
GET /v1/messages?to=legal&has_attachments=true&body=contract

# Find emails without attachments for cleanup
GET /v1/messages?has_attachments=false&before=2023-01-01T00:00:00Z

4. Birleşik İş Mantığı

# Find urgent flagged messages from VIPs with attachments
GET /v1/messages?is_flagged=true&from=ceo&has_attachments=true&subject=urgent

Geliştiriciler İçin Bunun Önemi

Daha Önce İmkansız Olan Uygulamalar Oluşturun:

  1. Gelişmiş E-posta Analizi: E-posta modellerini boyuta, gönderene ve içeriğe göre analiz edin
  2. Akıllı E-posta Yönetimi: Karmaşık kriterlere göre otomatik düzenleme
  3. Uyumluluk ve Keşif: Yasal gereklilikler için belirli e-postaları bulun
  4. İş Zekası: E-posta iletişim modellerinden içgörüler çıkarın
  5. Otomatik İş Akışları: Gelişmiş e-posta filtrelerine göre eylemleri tetikleyin

Teknik Uygulama

Arama API'miz şunları kullanır:

  • Uygun indeksleme stratejileriyle Regex optimizasyonu
  • Performans için Paralel yürütme
  • Güvenlik için Giriş doğrulaması
  • Güvenilirlik için Kapsamlı hata işleme
// Example: Complex search implementation
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' } }
    ]
  });
}

// Combine with AND logic
if (searchConditions.length > 0) {
  query.$and = searchConditions;
}

Tip

Geliştirici Avantajı: Forward Email'in arama API'si ile, REST API'lerinin basitliğini korurken işlevsellik açısından masaüstü istemcileriyle rekabet edebilecek e-posta uygulamaları oluşturabilirsiniz.

Yıldırım Hızında Performans Mimarisi

Teknik yığınımız hız ve güvenilirlik için oluşturulmuştur:

Performans Ölçütleri

Neden Yıldırım Hızındayız:

Bileşen Teknoloji Performans Faydası
Depolamak NVMe SSD Geleneksel SATA'dan 10 kat daha hızlı
Veritabanı SQLite + msgpackr Sıfır ağ gecikmesi, optimize edilmiş serileştirme
Donanım AMD Ryzen çıplak metal Sanallaştırma yükü yok
Önbelleğe Alma Bellekte + kalıcı Milisaniyenin altında tepki süreleri
Yedeklemeler Cloudflare R2 şifrelendi Kurumsal düzeyde güvenilirlik

Gerçek Performans Rakamları:

  • API Yanıt Süresi: < 50 ms ortalama
  • Mesaj Alma: Önbelleğe alınmış mesajlar için < 10 ms
  • Klasör İşlemleri: Meta veri işlemleri için < 5 ms
  • Kişi Senkronizasyonu: Saniyede 1000+ kişi
  • Çalışma Süresi: Yedekli altyapı ile %99,99 SLA

Gizlilik Öncelikli Mimari

Sıfır Bilgi Tasarımı: IMAP şifrenizle yalnızca siz erişebilirsiniz; e-postalarınızı okuyamayız. sıfır bilgi mimarisi, göz alıcı performans sunarken tam gizlilik sağlar.

Neden Farklıyız: Tam Karşılaştırma

Önemli Sağlayıcı Sınırlamaları

Sağlayıcı Temel Sorunlar Belirli Sınırlamalar
Gmail API'si Salt okunur, Karmaşık OAuth, Ayrı API'ler Cannot modify existing messages
Labels ≠ folders
1 billion quota units/day limit
Requires separate APIs kişiler/takvim için
Outlook API'si Kullanımdan kaldırılmış, kafa karıştırıcı, kurumsal odaklı HÜCRE_BAĞLANTISI_0
HÜCRE_BAĞLANTISI_1 (EWS, Grafik, REST)
HÜCRE_BAĞLANTISI_2
HÜCRE_BAĞLANTISI_3
Apple iCloud Genel API Yok HÜCRE_BAĞLANTISI_0
HÜCRE_BAĞLANTISI_1
HÜCRE_BAĞLANTISI_2
HÜCRE_BAĞLANTISI_3
ProtonPosta API Yok, Yanlış Açık Kaynak İddiaları No public API available
Bridge software required IMAP erişimi için
Claims "open source" ancak server code is proprietary
Limited to paid plans only
Toplam API Yok, Yanıltıcı Şeffaflık No REST API for email management
Claims "open source" ancak backend is closed
IMAP/SMTP not supported
Proprietary encryption standart entegrasyonları engeller
Zapier E-postası Ciddi Oran Sınırlamaları HÜCRE_BAĞLANTISI_0
HÜCRE_BAĞLANTISI_1
HÜCRE_BAĞLANTISI_2

E-postayı İletmenin Avantajları

Özellik E-postayı İlet Yarışma
Tam CRUD ✅ Tüm veriler için tam oluşturma, okuma, güncelleme ve silme ❌ Salt okunur veya sınırlı işlemler
Birleşik API ✅ Mesajlar, klasörler, kişiler, takvimler tek bir API'de ❌ Ayrı API'ler veya eksik özellikler
Basit Kimlik Doğrulama ✅ Takma ad kimlik bilgileriyle temel kimlik doğrulaması ❌ Birden fazla kapsama sahip karmaşık OAuth
Hiçbir Oran Sınırı Yok ✅ Gerçek uygulamalar için tasarlanmış cömert sınırlar ❌ İş akışlarını bozan kısıtlayıcı kotalar
Kendi Kendine Barındırma Complete self-hosting option ❌ Yalnızca satıcıya bağlılık
Mahremiyet ✅ Sıfır bilgi, şifreli, özel ❌ Veri madenciliği ve gizlilik endişeleri
Performans ✅ 50 ms'nin altındaki yanıtlar, NVMe depolama ❌ Ağ gecikmesi, kısıtlama gecikmeleri

Açık Kaynaklı Şeffaflık Sorunu

ProtonMail ve Tuta kendilerini "açık kaynaklı" ve "şeffaf" olarak pazarlıyorlar, ancak bu, modern gizlilik ilkelerini ihlal eden yanıltıcı bir pazarlama yöntemidir.

Warning

Yanlış Şeffaflık İddiaları: Hem ProtonMail hem de Tuta, en kritik sunucu tarafı kodlarını özel ve kapalı tutarken, "açık kaynaklı" kimlik bilgilerini açıkça duyuruyor.

ProtonMail'in Aldatmacası:

  • İddialar: "Biz açık kaynak kodluyuz" pazarlamada öne çıkan bir özelliktir
  • Gerçeklik: Sunucu kodu tamamen özeldir - yalnızca istemci uygulamaları açık kaynaklıdır
  • Etkisi: Kullanıcılar sunucu tarafı şifreleme, veri işleme veya gizlilik iddialarını doğrulayamaz
  • Şeffaflık İhlali: Gerçek e-posta işleme ve depolama sistemlerini denetlemenin bir yolu yoktur

Tuta'nın Yanıltıcı Pazarlaması:

Modern Gizlilik İçin Bunun Önemi:

2025 yılında gerçek gizlilik tam şeffaflık gerektiriyor. E-posta sağlayıcıları "açık kaynak" iddiasında bulunup sunucu kodlarını gizlediğinde:

  1. Doğrulanamaz Şifreleme: Verilerinizin nasıl şifrelendiğini denetleyemezsiniz.
  2. Gizli Veri Uygulamaları: Sunucu tarafı veri işleme, bir kara kutu olarak kalır.
  3. Güven Tabanlı Güvenlik: Doğrulama olmadan iddialarına güvenmelisiniz.
  4. Tedarikçi Bağımlılığı: Tescilli sistemler veri taşınabilirliğini engeller.

İletilen E-postanın Gerçek Şeffaflığı:

  • Tamamen açık kaynak - sunucu ve istemci kodu
  • Kendi kendine barındırma mevcuttur - kendi örneğinizi çalıştırın
  • Standart protokoller - IMAP, SMTP, CardDAV, CalDAV uyumluluğu
  • Denetlenebilir güvenlik - her kod satırı incelenebilir
  • Tedarikçi bağımlılığı yok - verileriniz, kontrolünüz

Tip

Gerçek açık kaynak, her iddiayı doğrulayabileceğiniz anlamına gelir. Forward Email ile şifrelememizi denetleyebilir, veri işleme sürecimizi inceleyebilir ve hatta kendi örneğinizi çalıştırabilirsiniz. İşte gerçek şeffaflık budur.

30+ Gerçek Dünya Entegrasyon Örneği

1. WordPress İletişim Formu Geliştirmesi

Sorun: WordPress SMTP yapılandırma hataları (631 GitHub sorunu) Çözüm: Doğrudan API entegrasyonu SMTP'yi tamamen atlıyor

// WordPress contact form that saves to Sent folder
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: 'Contact Form: ' + formData.subject,
    text: formData.message,
    folder: 'Sent'
  })
});

2. E-posta Otomasyonu için Zapier Alternatifi

Sorun: Zapier'ın saatte 10 e-posta sınırı ve IMAP algılama hataları Çözüm: Tam e-posta kontrolüyle sınırsız otomasyon

// Auto-organize emails by sender domain
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-posta Senkronizasyonu

Sorun: E-posta ve CRM sistemleri arasında manuel iletişim yönetimi Çözüm: CardDAV iletişim API'siyle çift yönlü senkronizasyon

// Sync new email contacts to CRM
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-ticaret Sipariş İşleme

Sorun: e-ticaret platformları için manuel sipariş e-postası işleme Çözüm: Otomatik sipariş yönetimi hattı

// Process order confirmation emails
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. Destek Talebi Entegrasyonu

Sorun: E-posta dizileri yardım masası platformları'a dağılmış durumda Çözüm: Tam e-posta dizisi takibi

// Create support ticket from email thread
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. Bülten Yönetim Sistemi

Sorun: Sınırlı haber bülteni platformu entegrasyonu Çözüm: Eksiksiz abone yaşam döngüsü yönetimi

// Auto-manage newsletter subscriptions
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-posta Tabanlı Görev Yönetimi

Sorun: Gelen kutusu doluluğu ve görev takibi Çözüm: E-postaları eyleme dönüştürülebilir görevlere dönüştürün

// 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. Çoklu Hesap E-posta Toplama

Sorun: birden fazla e-posta hesabı'ı sağlayıcılar arasında yönetme Çözüm: Birleşik gelen kutusu arayüzü

// 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. Gelişmiş E-posta Analizi Panosu

Sorun: Gelişmiş filtrelemeyle e-posta kalıpları hakkında bilgi yok Çözüm: Gelişmiş arama özellikleri kullanılarak özel e-posta analitiği

// 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. Akıllı E-posta Arşivleme

Sorun: Manuel e-posta organizasyonu Çözüm: Akıllı e-posta kategorilendirmesi

// 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. E-postadan Takvime Entegrasyon

Sorun: E-postalardan manuel takvim etkinliği oluşturma Çözüm: Otomatik olay ayıklama ve oluşturma

// 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-posta Yedekleme ve Uyumluluk

Sorun: E-posta saklama ve uyumluluk gereksinimleri Çözüm: Meta veri koruma ile otomatik yedekleme

// Backup emails with full metadata
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-posta Tabanlı İçerik Yönetimi

Sorun: CMS platformları için e-posta yoluyla içerik gönderimlerini yönetme Çözüm: İçerik yönetim sistemi olarak e-posta

// Process content submissions from email
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-posta Şablonu Yönetimi

Sorun: Ekip genelinde tutarsız e-posta şablonları Çözüm: API'li merkezi şablon sistemi

// Send templated emails with dynamic content
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-posta Tabanlı İş Akışı Otomasyonu

Sorun: E-posta yoluyla manuel onay süreçleri Çözüm: Otomatik iş akışı tetikleyicileri

// Process approval emails
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-posta Güvenlik İzleme

Sorun: Manuel güvenlik tehdidi tespiti Çözüm: Otomatik tehdit analizi

// Monitor for suspicious emails
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-posta Tabanlı Anket Toplama

Sorun: anket yanıtı'ın manuel işlenmesi Çözüm: Otomatik yanıt toplama

// Collect and process survey responses
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-posta Performans İzleme

Sorun: e-posta teslim performansı görünürlüğü yok Çözüm: Gerçek zamanlı e-posta ölçümleri

// Monitor email delivery performance
const sentEmails = await fetch('/v1/messages?folder=Sent');
const deliveryStats = {
  sent: sentEmails.length,
  bounces: await countBounces(),
  deliveryRate: calculateDeliveryRate()
};
await updateDashboard(deliveryStats);

19. E-posta Tabanlı Potansiyel Müşteri Niteliği

Sorun: E-posta etkileşimlerinden manuel puanlama liderliği Çözüm: Otomatik potansiyel müşteri yeterlilik süreci

// 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-posta Tabanlı Proje Yönetimi

Sorun: Proje güncellemeleri e-posta dizilerine dağılmış durumda Çözüm: Merkezi proje iletişim merkezi

// 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-posta Tabanlı Envanter Yönetimi

Sorun: Tedarikçi e-postalarından manuel envanter güncellemeleri Çözüm: E-posta bildirimlerinden otomatik envanter takibi

// 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-posta Tabanlı Fatura İşleme

Sorun: Manuel fatura işleme ve muhasebe entegrasyonu Çözüm: Otomatik fatura çıkarma ve muhasebe sistemi senkronizasyonu

// 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-posta Tabanlı Etkinlik Kaydı

Sorun: E-posta yanıtlarından etkinlik kaydı'ın manuel işlenmesi Çözüm: Otomatik katılımcı yönetimi ve takvim entegrasyonu

// 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-posta Tabanlı Belge Onay İş Akışı

Sorun: E-posta yoluyla karmaşık belge onayı zincirleri Çözüm: Otomatik onay takibi ve belge sürümleme

// 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-posta Tabanlı Müşteri Geri Bildirim Analizi

Sorun: Manuel müşteri geri bildirimi toplama ve duygu analizi Çözüm: Otomatik geri bildirim işleme ve duygu takibi

// 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-posta Tabanlı İşe Alma Süreci

Sorun: Manuel işe alım ve aday takibi Çözüm: Otomatik aday yönetimi ve mülakat planlaması

// 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-posta Tabanlı Gider Raporu İşleme

Sorun: Manuel gider raporu gönderimi ve onayı Çözüm: Otomatik gider çıkarma ve onay iş akışı

// 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-posta Tabanlı Kalite Güvence Raporlaması

Sorun: Manuel kalite güvencesi sorun takibi Çözüm: Otomatik QA sorun yönetimi ve hata takibi

// 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-posta Tabanlı Satıcı Yönetimi

Sorun: Manuel satıcı iletişimi ve sözleşme takibi Çözüm: Otomatik tedarikçi ilişkileri yönetimi

// 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-posta Tabanlı Sosyal Medya İzleme

Sorun: sosyal medya bildirimlerinin manuel takibi ve yanıtlanması Çözüm: Otomatik sosyal medya uyarı işleme ve yanıt koordinasyonu

// 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']
      })
    });
  }
}

Başlarken

1. Yönlendirme E-posta Hesabınızı Oluşturun

forwardemail.net adresine kaydolun ve alan adınızı doğrulayın.

2. API Kimlik Bilgilerini Oluşturun

Takma adınız olan e-posta adresiniz ve parolanız API kimlik bilgileri olarak kullanılır; ek bir kurulum gerekmez.

3. İlk API Çağrınızı Yapın

# List your messages
curl -u "your-alias@domain.com:password" \
  https://api.forwardemail.net/v1/messages

# Create a new contact
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. {#4-explore-the-documentation} Belgelerini inceleyin

Etkileşimli örneklerle birlikte tam API dokümantasyonu için forwardemail.net/en/email-api adresini ziyaret edin.

Teknik Kaynaklar


E-posta entegrasyonunuzu devrim niteliğinde değiştirmeye hazır mısınız? Bugün Forward Email'in API'sini kullanarak oluşturmaya başlayın ve geliştiriciler için tasarlanmış ilk eksiksiz e-posta yönetim platformunu deneyimleyin.

E-postayı İlet: API'leri nihayet doğru hale getiren e-posta hizmeti.