API Email Lengkap Pertama: Bagaimana Forward Email Merevolusi Manajemen Email

TL;DR: Kami membangun REST API lengkap pertama di dunia untuk manajemen email dengan kemampuan pencarian canggih yang tidak ditawarkan layanan lain. Sementara Gmail, Outlook, dan Apple memaksa pengembang menggunakan IMAP atau API dengan batasan kecepatan, Forward Email menghadirkan operasi CRUD yang sangat cepat untuk pesan, folder, kontak, dan kalender melalui antarmuka REST terpadu dengan lebih dari 15 parameter pencarian. Inilah API email yang telah lama ditunggu-tunggu oleh para pengembang.
Masalah API Email
API email pada dasarnya rusak. Titik.
Setiap penyedia email utama memaksa pengembang untuk membuat salah satu dari dua pilihan buruk:
- IMAP Hell: Bergulat dengan protokol berusia 30 tahun yang dirancang untuk klien desktop, bukan aplikasi modern
- API yang Lumpuh: API yang kompleks dengan batasan kecepatan, hanya baca, dan OAuth yang tidak dapat mengelola data email Anda yang sebenarnya
Hasilnya? Para pengembang akhirnya mengabaikan integrasi email sepenuhnya atau membuang waktu berminggu-minggu untuk membangun pembungkus IMAP yang rapuh dan terus-menerus rusak.
Warning
Rahasia Rahasia: Kebanyakan "API email" hanyalah API pengiriman. Anda tidak dapat mengatur folder, menyinkronkan kontak, atau mengelola kalender secara terprogram melalui antarmuka REST yang sederhana. Hingga saat ini.
Apa yang Sebenarnya Dikatakan Pengembang
Frustrasi itu nyata dan terdokumentasi di mana-mana:
"Baru-baru ini saya mencoba mengintegrasikan Gmail ke dalam aplikasi saya, dan saya menghabiskan terlalu banyak waktu untuk itu. Saya memutuskan bahwa tidak ada gunanya mendukung Gmail."
- Pengembang Hacker News, 147 suara positif
"Apakah semua API email biasa-biasa saja? Sepertinya terbatas atau membatasi dalam beberapa hal."
"Mengapa pengembangan email harus buruk?"
- Reddit r/webdev, 89 komentar tentang kesulitan pengembang
"Apa yang membuat API Gmail lebih efisien daripada IMAP? Alasan lain mengapa API Gmail jauh lebih efisien adalah karena ia hanya perlu mengunduh setiap pesan sekali. Dengan IMAP, setiap pesan harus diunduh dan diindeks..."
- Pertanyaan Stack Overflow dengan 47 upvote
Buktinya ada dimana-mana:
- Masalah SMTP WordPress: 631 masalah GitHub tentang kegagalan pengiriman email
- Keterbatasan Zapier: Keluhan masyarakat tentang batas 10 email/jam dan kegagalan deteksi IMAP
- Proyek API IMAP: Banyak sumber terbuka proyek dibuat khusus untuk "mengonversi IMAP ke REST" karena tidak ada penyedia yang menawarkan ini
- Kekecewaan API Gmail: Tumpukan Luapan memiliki 4.847 pertanyaan yang ditandai "gmail-api" dengan keluhan umum tentang batas kecepatan dan kompleksitas
Solusi Revolusioner Forward Email
Kami adalah layanan email pertama yang menawarkan operasi CRUD lengkap untuk semua data email melalui REST API terpadu.
Ini bukan sekadar API pengiriman biasa. Ini adalah kendali terprogram penuh atas:
- Pesan: Membuat, membaca, memperbarui, menghapus, mencari, memindahkan, menandai
- Folder: Manajemen folder IMAP penuh melalui titik akhir REST
- Kontak: Penyimpanan dan sinkronisasi kontak KartuDAV
- Kalender: Acara dan penjadwalan kalender CalDAV
Mengapa Kami Membangun Ini
Masalahnya: Setiap penyedia email memperlakukan email sebagai kotak hitam. Anda bisa mengirim email, mungkin membacanya dengan OAuth yang rumit, tetapi Anda tidak bisa benar-benar mengelola data email Anda secara terprogram.
Visi Kami: Email harus semudah integrasi API modern mana pun. Tanpa pustaka IMAP. Tanpa kerumitan OAuth. Tanpa mimpi buruk batas kecepatan. Hanya titik akhir REST sederhana yang berfungsi.
Hasilnya: Layanan email pertama tempat Anda dapat membangun klien email lengkap, integrasi CRM, atau sistem otomasi hanya dengan menggunakan permintaan HTTP.
Autentikasi Sederhana
Tidak ada Kompleksitas OAuth. Tidak ada kata sandi khusus aplikasi. Hanya kredensial alias Anda:
curl -u "alias@yourdomain.com:password" \
https://api.forwardemail.net/v1/messages
20 Titik Akhir yang Mengubah Segalanya
Pesan (5 titik akhir)
GET /v1/messages
- Daftar pesan dengan pemfilteran (?folder=
,?is_unread=
,?is_flagged=
)POST /v1/messages
- Kirim pesan baru langsung ke folderGET /v1/messages/:id
- Ambil pesan tertentu dengan metadata lengkapPUT /v1/messages/:id
- Perbarui pesan (tanda, folder, status telah dibaca)DELETE /v1/messages/:id
- Hapus pesan secara permanen
Folder (5 titik akhir)
GET /v1/folders
- Daftar semua folder dengan status langgananPOST /v1/folders
- Buat folder baru dengan properti khususGET /v1/folders/:id
- Dapatkan detail folder dan jumlah pesanPUT /v1/folders/:id
- Perbarui properti folder dan langgananDELETE /v1/folders/:id
- Hapus folder dan tangani relokasi pesan
Kontak (5 titik akhir)
GET /v1/contacts
- Daftar kontak dengan pencarian dan paginasiPOST /v1/contacts
- Buat kontak baru dengan dukungan vCard penuhGET /v1/contacts/:id
- Ambil kontak beserta semua kolom dan metadataPUT /v1/contacts/:id
- Perbarui informasi kontak dengan validasi ETagDELETE /v1/contacts/:id
- Hapus kontak dengan penanganan berjenjang
Kalender (5 titik akhir)
GET /v1/calendars
- Daftar acara kalender dengan pemfilteran tanggalPOST /v1/calendars
- Buat acara kalender dengan peserta dan pengulanganGET /v1/calendars/:id
- Dapatkan detail acara dengan penanganan zona waktuPUT /v1/calendars/:id
- Perbarui acara dengan deteksi konflikDELETE /v1/calendars/:id
- Hapus acara dengan notifikasi peserta
Pencarian Lanjutan: Tidak Ada Layanan Lain yang Membandingkan
Forward Email adalah satu-satunya layanan email yang menawarkan pencarian terprogram yang komprehensif di seluruh bidang pesan melalui REST API.
Meskipun penyedia lain hanya menawarkan penyaringan dasar, kami telah membangun API pencarian email tercanggih yang pernah ada. Tidak ada API Gmail, API Outlook, atau layanan lain yang mampu menandingi kemampuan pencarian kami.
Lanskap API Penelusuran Rusak
Keterbatasan Pencarian API Gmail:
- ✅ Hanya parameter dasar
q
- ❌ Tidak ada pencarian khusus bidang
- ❌ Tidak ada pemfilteran rentang tanggal
- ❌ Tidak ada pemfilteran berdasarkan ukuran
- ❌ Tidak ada pemfilteran lampiran
- ❌ Terbatas pada sintaks pencarian Gmail
Keterbatasan Pencarian API Outlook:
- ✅ Parameter
$search
dasar - ❌ Tidak ada penargetan kolom lanjutan
- ❌ Tidak ada kombinasi kueri yang kompleks
- ❌ Pembatasan laju yang agresif
- ❌ Diperlukan sintaks OData yang kompleks
Apple iCloud:
- ❌ Tanpa API sama sekali
- ❌ Hanya pencarian IMAP (jika Anda bisa membuatnya berfungsi)
ProtonMail & Tuta:
- ❌ Tidak ada API publik
- ❌ Tidak ada kemampuan pencarian terprogram
API Pencarian Revolusioner Forward Email
Kami menawarkan 15+ parameter pencarian yang tidak disediakan oleh layanan lain:
Kemampuan Pencarian | Teruskan Email | Gmail API | API Outlook | Yang lain |
---|---|---|---|---|
Pencarian Khusus Bidang | ✅ Subjek, isi, dari, kepada, cc, tajuk | ❌ | ❌ | ❌ |
Pencarian Umum Multi-Bidang | ✅ ?search= di semua bidang |
✅ Dasar q= |
✅ Dasar $search= |
❌ |
Pemfilteran Rentang Tanggal | ✅ ?since= & ?before= |
❌ | ❌ | ❌ |
Penyaringan Berbasis Ukuran | ✅ ?min_size= & ?max_size= |
❌ | ❌ | ❌ |
Pemfilteran Lampiran | ✅ ?has_attachments=true/false |
❌ | ❌ | ❌ |
Pencarian Header | ✅ ?headers=X-Priority |
❌ | ❌ | ❌ |
Pencarian ID Pesan | ✅ ?message_id=abc123 |
❌ | ❌ | ❌ |
Filter Gabungan | ✅ Beberapa parameter dengan logika AND | ❌ | ❌ | ❌ |
Tidak Peka terhadap Huruf Besar/Kecil | ✅ Semua pencarian | ✅ | ✅ | ❌ |
Dukungan Paginasi | ✅ Bekerja dengan semua parameter pencarian | ✅ | ✅ | ❌ |
Contoh Pencarian Dunia Nyata
Temukan Semua Faktur dari Kuartal Terakhir:
# 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
Cari Lampiran Besar dari Pengirim Tertentu:
# 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
Pencarian Multi-Bidang Kompleks:
# 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"
Keunggulan Performa
Kinerja Pencarian Email Teruskan:
- ⚡ Waktu respons di bawah 100 ms untuk pencarian kompleks
- 🔍 Optimasi Regex dengan pengindeksan yang tepat
- 📊 Eksekusi kueri paralel untuk hitungan dan data
- 💾 Penggunaan memori yang efisien dengan kueri yang ramping
Masalah Kinerja Pesaing:
- 🐌 API Gmail: Batas kuota hingga 250 unit kuota per pengguna per detik
- 🐌 API Outlook: Pembatasan agresif dengan persyaratan penundaan yang kompleks
- 🐌 Lainnya: Tidak ada API yang dapat dibandingkan
Fitur Pencarian yang Tidak Dimiliki Orang Lain
1. Pencarian Spesifik Header
# Find messages with specific headers
GET /v1/messages?headers=X-Priority:1
GET /v1/messages?headers=X-Spam-Score
2. Kecerdasan Berbasis Ukuran
# 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. Alur Kerja Berbasis Lampiran
# 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. Logika Bisnis Gabungan
# Find urgent flagged messages from VIPs with attachments
GET /v1/messages?is_flagged=true&from=ceo&has_attachments=true&subject=urgent
Mengapa Hal Ini Penting bagi Pengembang
Membangun Aplikasi yang Sebelumnya Tidak Mungkin:
- Analisis Email Lanjutan: Analisis pola email berdasarkan ukuran, pengirim, dan konten
- Manajemen Email Cerdas: Atur otomatis berdasarkan kriteria yang kompleks
- Kepatuhan dan Penemuan: Temukan email spesifik untuk persyaratan hukum
- Kecerdasan Bisnis: Ekstrak wawasan dari pola komunikasi email
- Alur Kerja Otomatis: Picu tindakan berdasarkan filter email yang canggih
Implementasi Teknis
API pencarian kami menggunakan:
Optimalisasi Regex dengan strategi pengindeksan yang tepat
- Eksekusi paralel untuk performa
- Validasi input untuk keamanan
- Penanganan kesalahan komprehensif untuk keandalan
// 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
Keunggulan Pengembang: Dengan API pencarian Forward Email, Anda dapat membangun aplikasi email yang fungsionalitasnya menyaingi klien desktop, sekaligus tetap mempertahankan kesederhanaan REST API.
Arsitektur Performa Super Cepat
Tumpukan teknis kami dibuat untuk kecepatan dan keandalan:
Tolok Ukur Kinerja
Mengapa Kami Sangat Cepat:
Komponen | Teknologi | Manfaat Kinerja |
---|---|---|
Penyimpanan | NVMe SSD | 10x lebih cepat dari SATA tradisional |
Basis Data | SQLite + msgpackr | Latensi jaringan nol, serialisasi yang dioptimalkan |
Perangkat keras | AMD Ryzen logam polos | Tidak ada overhead virtualisasi |
Penyimpanan dalam cache | Dalam memori + persisten | Waktu respons sub-milidetik |
Cadangan | Cloudflare R2 terenkripsi | Keandalan tingkat perusahaan |
Angka Kinerja Nyata:
- Waktu Respons API: Rata-rata <50 md
- Pengambilan Pesan: <10 md untuk pesan yang di-cache
- Operasi Folder: <5 md untuk operasi metadata
- Sinkronisasi Kontak: 1000+ kontak/detik
- Waktu Aktif: 99,99% SLA dengan infrastruktur redundan
Arsitektur Privasi Utama
Desain Tanpa Pengetahuan: Hanya Anda yang memiliki akses dengan kata sandi IMAP Anda - kami tidak dapat membaca email Anda. arsitektur tanpa pengetahuan kami memastikan privasi penuh sekaligus memberikan kinerja yang luar biasa.
Mengapa Kami Berbeda: Perbandingan Lengkap
Batasan Penyedia Utama
Keuntungan Meneruskan Email
Fitur | Teruskan Email | Kompetisi |
---|---|---|
CRUD Lengkap | ✅ Buat, baca, perbarui, hapus penuh untuk semua data | ❌ Operasi hanya baca atau terbatas |
API Terpadu | ✅ Pesan, folder, kontak, kalender dalam satu API | ❌ API terpisah atau fitur yang hilang |
Otorisasi Sederhana | ✅ Otentikasi dasar dengan kredensial alias | ❌ OAuth kompleks dengan beberapa cakupan |
Tidak Ada Batasan Tarif | ✅ Batasan yang besar dirancang untuk aplikasi nyata | ❌ Kuota terbatas yang mengganggu alur kerja |
Hosting Mandiri | ✅ Complete self-hosting option | ❌ Hanya untuk vendor lock-in |
Pribadi | ✅ Tanpa pengetahuan, terenkripsi, pribadi | ❌ Penambangan data dan masalah privasi |
Pertunjukan | ✅ Respons di bawah 50 ms, penyimpanan NVMe | ❌ Latensi jaringan, penundaan pelambatan |
Masalah Transparansi Sumber Terbuka
ProtonMail dan Tuta memasarkan diri mereka sebagai "sumber terbuka" dan "transparan", tetapi ini adalah pemasaran yang menyesatkan dan melanggar prinsip privasi modern.
Warning
Klaim Transparansi Palsu: Baik ProtonMail maupun Tuta secara terang-terangan mengiklankan kredensial "sumber terbuka" mereka, namun tetap menjaga kode sisi server mereka yang paling penting tetap bersifat privat dan tertutup.
Penipuan ProtonMail:
- Klaim: "Kami adalah sumber terbuka" ditampilkan secara mencolok dalam pemasaran
- Realitas: Kode server sepenuhnya merupakan hak milik - hanya aplikasi klien yang bersifat sumber terbuka
- Dampak: Pengguna tidak dapat memverifikasi enkripsi sisi server, penanganan data, atau klaim privasi
- Pelanggaran Transparansi: Tidak ada cara untuk mengaudit sistem pemrosesan dan penyimpanan email yang sebenarnya
Pemasaran Tuta yang Menyesatkan:
- Klaim: "Email sumber terbuka" sebagai nilai jual utama
- Realitas: Infrastruktur backend bersifat sumber tertutup - hanya antarmuka pengguna yang tersedia
- Dampak: Enkripsi kepemilikan mencegah protokol email standar (IMAP/SMTP)
- Strategi Penguncian: Enkripsi khusus memaksa ketergantungan pada vendor
Mengapa Hal Ini Penting untuk Privasi Modern:
Pada tahun 2025, privasi sejati membutuhkan transparansi penuh. Ketika penyedia email mengklaim "sumber terbuka" tetapi menyembunyikan kode server mereka:
- Enkripsi yang Tidak Dapat Diverifikasi: Anda tidak dapat mengaudit bagaimana data Anda sebenarnya dienkripsi
- Praktik Data Tersembunyi: Penanganan data sisi server tetap menjadi kotak hitam
- Keamanan Berbasis Kepercayaan: Anda harus memercayai klaim mereka tanpa verifikasi
- Penguncian Vendor: Sistem kepemilikan mencegah portabilitas data
Transparansi Sejati Email Teruskan:
- ✅ Sumber terbuka lengkap - kode server dan klien
- ✅ Hosting mandiri tersedia - jalankan instans Anda sendiri
- ✅ Protokol standar - kompatibilitas IMAP, SMTP, CardDAV, CalDAV
- ✅ Keamanan yang dapat diaudit - setiap baris kode dapat diperiksa
- ✅ Tanpa vendor lock-in - data Anda, kendali Anda
Tip
Sumber terbuka sejati berarti Anda dapat memverifikasi setiap klaim. Dengan Forward Email, Anda dapat mengaudit enkripsi kami, meninjau penanganan data kami, dan bahkan menjalankan instansi Anda sendiri. Itulah transparansi sejati.
30+ Contoh Integrasi Dunia Nyata
1. Peningkatan Formulir Kontak WordPress
Masalah: Kegagalan konfigurasi SMTP WordPress (631 masalah GitHub) Solusi: Integrasi API langsung mengabaikan SMTP sepenuhnya
// 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. Alternatif Zapier untuk Otomatisasi Email
Masalah: Batas 10 email/jam Zapier dan Kegagalan deteksi IMAP Solusi: Otomatisasi tanpa batas dengan kontrol email penuh
// 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. Sinkronisasi Email CRM
Masalah: Manajemen kontak manual antara email dan Sistem CRM Solusi: Sinkronisasi dua arah dengan API kontak KartuDAV
// 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. Pemrosesan Pesanan E-niaga
Masalah: Pemrosesan email pesanan manual untuk platform e-commerce Solusi: Alur manajemen pesanan otomatis
// 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. Integrasi Tiket Dukungan
Masalah: Rangkaian email tersebar di platform meja bantuan Solusi: Pelacakan rangkaian email secara menyeluruh
// 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. Sistem Manajemen Buletin
Masalah: Integrasi platform buletin terbatas Solusi: Manajemen siklus hidup pelanggan yang lengkap
// 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. Manajemen Tugas Berbasis Email
Masalah: Kotak masuk penuh dan pelacakan tugas Solusi: Ubah email menjadi tugas yang dapat ditindaklanjuti
// 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. Agregasi Email Multi-Akun
Masalah: Mengelola beberapa akun email di seluruh penyedia Solusi: Antarmuka kotak masuk terpadu
// 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. Dasbor Analisis Email Lanjutan
Masalah: Tidak ada wawasan tentang pola email dengan pemfilteran canggih Solusi: Analisis email khusus menggunakan kemampuan pencarian lanjutan
// 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. Pengarsipan Email Cerdas
Masalah: Manual organisasi email Solusi: Kategorisasi email yang cerdas
// 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. Integrasi Email ke Kalender
Masalah: Pembuatan acara kalender secara manual dari email Solusi: Ekstraksi dan pembuatan peristiwa secara otomatis
// 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. Pencadangan dan Kepatuhan Email
Masalah: Retensi email dan persyaratan kepatuhan Solusi: Pencadangan otomatis dengan pelestarian metadata
// 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. Manajemen Konten Berbasis Email
Masalah: Mengelola kiriman konten melalui email untuk Platform CMS Solusi: Email sebagai sistem manajemen konten
// 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. Manajemen Template Email
Masalah: templat email tidak konsisten di seluruh tim Solusi: Sistem templat terpusat dengan API
// 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. Otomatisasi Alur Kerja Berbasis Email
Masalah: proses persetujuan manual melalui email Solusi: Pemicu alur kerja otomatis
// 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. Pemantauan Keamanan Email
Masalah: deteksi ancaman keamanan manual Solusi: Analisis ancaman otomatis
// 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. Pengumpulan Survei Berbasis Email
Masalah: Pemrosesan tanggapan survei manual Solusi: Agregasi respons otomatis
// 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. Pemantauan Kinerja Email
Masalah: Tidak ada visibilitas ke kinerja pengiriman email Solusi: Metrik email real-time
// 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. Kualifikasi Prospek Berbasis Email
Masalah: Manual skor prospek dari interaksi email Solusi: Jalur kualifikasi prospek otomatis
// 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. Manajemen Proyek Berbasis Email
Masalah: Pembaruan proyek tersebar di seluruh rangkaian email Solusi: Pusat komunikasi proyek terpusat
// 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. Manajemen Inventaris Berbasis Email
Masalah: Pembaruan inventaris manual dari email pemasok Solusi: Pelacakan inventaris otomatis dari notifikasi email
// 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. Pemrosesan Faktur Berbasis Email
Masalah: Integrasi manual pemrosesan faktur dan akuntansi Solusi: Ekstraksi faktur otomatis dan sinkronisasi sistem akuntansi
// 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. Pendaftaran Acara Berbasis Email
Masalah: Pemrosesan pendaftaran acara manual dari balasan email Solusi: Manajemen peserta dan integrasi kalender otomatis
// 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. Alur Kerja Persetujuan Dokumen Berbasis Email
Masalah: Rantai persetujuan dokumen yang kompleks melalui email Solusi: Pelacakan persetujuan otomatis dan versi dokumen
// 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. Analisis Umpan Balik Pelanggan Berbasis Email
Masalah: Pengumpulan umpan balik pelanggan manual dan analisis sentimen Solusi: Pemrosesan umpan balik dan pelacakan sentimen otomatis
// 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. Alur Rekrutmen Berbasis Email
Masalah: Pelacakan perekrutan dan kandidat secara manual Solusi: Manajemen kandidat dan penjadwalan wawancara otomatis
// 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. Pemrosesan Laporan Pengeluaran Berbasis Email
Masalah: Pengiriman dan persetujuan laporan pengeluaran secara manual Solusi: Alur kerja ekstraksi dan persetujuan pengeluaran otomatis
// 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. Pelaporan Jaminan Kualitas Berbasis Email
Masalah: Pelacakan masalah jaminan kualitas manual Solusi: Manajemen masalah QA otomatis dan pelacakan bug
// 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. Manajemen Vendor Berbasis Email
Masalah: Pelacakan komunikasi vendor dan kontrak manual Solusi: Manajemen hubungan vendor otomatis
// 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. Pemantauan Media Sosial Berbasis Email
Masalah: Pelacakan dan respons penyebutan media sosial manual Solusi: Pemrosesan notifikasi media sosial dan koordinasi respons otomatis
// 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']
})
});
}
}
Memulai
1. Buat Akun Email Penerusan Anda
Daftar di forwardemail.net dan verifikasi domain Anda.
2. Hasilkan Kredensial API
Email alias dan kata sandi Anda berfungsi sebagai kredensial API - tidak diperlukan pengaturan tambahan.
3. Lakukan Panggilan API Pertama Anda
# 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. Jelajahi Dokumentasi
Kunjungi forwardemail.net/en/email-api untuk dokumentasi API lengkap dengan contoh interaktif.
Sumber Daya Teknis
- Dokumentasi API Lengkap - Spesifikasi OpenAPI 3.0 interaktif
- Panduan Hosting Mandiri - Terapkan Forward Email di infrastruktur Anda
- Buku Putih Keamanan - Detail arsitektur teknis dan keamanan
- Repositori GitHub - Basis kode sumber terbuka
- Dukungan Pengembang - Akses langsung ke tim teknisi kami
Siap merevolusi integrasi email Anda? Mulailah membangun dengan API Forward Email hari ini dan rasakan platform manajemen email lengkap pertama yang dirancang untuk pengembang.
Email Terusan: Layanan email yang akhirnya menggunakan API yang tepat.