Disposable email API β buat inbox, terima email, baca isi & link verifikasi.
π Overview
Semua response JSON, CORS terbuka (*), tanpa API key. Base URL:
https://mailkuh.my.id
π Authentication
Tidak wajib. Opsional kirim x-session-id untuk mengaitkan inbox ke session yang dibuat lewat GET /api/session.
π Quickstart
π Custom domain
Inbox hanya bisa dibuat di domain yang sudah terdaftar. Domain aktif sekarang:
1. Arahkan DNS
| Type | Name | Value | Priority | Proxy |
|---|---|---|---|---|
A | mail | <ip-server> | β | DNS only |
MX | @ | mail.<domain> | 10 | β |
A untuk mail harus DNS only (proxy Cloudflare dimatikan) β proxy tidak meneruskan SMTP port 25.2. Daftarkan ke Mailkuh
curl -X POST https://mailkuh.my.id/api/domains \
-H 'Content-Type: application/json' \
-d '{"domain":"domainku.com"}'
Response berisi hasil cek DNS live: dns.ok (MX ada) dan dns.pointsHere (MX mengarah ke server ini). Domain tetap ditambahkan walau DNS belum propagasi β cek ulang via GET /api/domains/{domain}.
Bisa juga lewat Web UI: tombol π Domain β Add Domain.
π‘ Endpoints β klik untuk expand & coba langsung
π¨ SMTP
Kirim email ke [email protected] (atau domain lain yang terdaftar). Server menerima langsung di port 25.
| Field | Value |
|---|---|
| MX host | mail.mailkuh.my.id |
| Port | 25 |
| TLS | tidak (plain SMTP) |
| Auth | tidak perlu |
| Max size | 5 MB |
import smtplib
from email.mime.text import MIMEText
msg = MIMEText("Hello dari luar!")
msg["Subject"] = "Test Mailkuh"
msg["From"] = "[email protected]"
msg["To"] = "[email protected]"
s = smtplib.SMTP("mail.mailkuh.my.id", 25, timeout=20)
s.send_message(msg)
s.quit()
Inbox otomatis dibuat saat email pertama masuk β tidak perlu POST dulu. Recipient di domain yang belum terdaftar ditolak 550.
π Message object
| Field | Type | Keterangan |
|---|---|---|
id | string | ID pesan (hex 32) |
from | string | Email pengirim (dari header From) |
fromName | string | Display name pengirim |
envelopeFrom | string | MAIL FROM di level SMTP |
to | string | Alamat inbox penerima |
subject | string | Subject sudah decode (RFC 2047) |
body | string | Plain text (QP/base64 sudah didecode) |
html | string | Bagian HTML bila ada |
links | string[] | Semua URL yang diekstrak β praktis untuk link verifikasi |
attachments | object[] | {filename, contentType, size} |
size | number | Ukuran raw (bytes) |
receivedAt | string | ISO timestamp |
raw | string | Raw RFC822 lengkap |
β οΈ Errors
| Code | Arti |
|---|---|
| 200 | OK |
| 400 | Body JSON invalid / field kurang / domain belum terdaftar |
| 404 | Pesan / domain / route tidak ada |
Format error: {"error":"pesan"}. List messages inbox kosong return [], bukan 404.