Phân tích e-mail (.eml) API
Phân tích e-mail thô (.eml / MIME) thành JSON: tiêu đề và địa chỉ đã giải mã, nội dung text và HTML, phần trả lời mới nhất, tệp đính kèm base64, DKIM.
Gửi e-mail thô (file .eml, body message/rfc822 hoặc mã nguồn qua raw), API trả JSON gọn: tiêu đề và tên người gửi đã giải mã RFC 2047 (kể cả tiếng Việt), from / to / cc / bcc / reply-to dạng tên + địa chỉ, ngày giờ theo ISO 8601, message id, in-reply-to và references để ghép luồng thư, nội dung text và HTML (đã giải mã quoted-printable, base64 và các bảng mã cũ) cùng mọi tệp đính kèm với tên file, kiểu MIME, dung lượng, content id và nội dung base64.
latest_reply cắt bỏ phần trích dẫn thư cũ ("On … wrote:", Gmail tiếng Việt "Vào … đã viết:", khối "From: / Sent:" của Outlook và các dòng ">"), đúng phần hệ thống ticket cần lưu. Chuỗi Received được tách (from, by, giao thức, IP, thời điểm), Authentication-Results cho kết quả SPF / DKIM / DMARC do máy chủ nhận ghi, DKIM-Signature cho tên miền và selector, List-Unsubscribe trả về cho thư bản tin.
attachments=meta chỉ liệt kê tệp đính kèm không kèm nội dung, none bỏ qua; tệp lớn hơn max_attachment_bytes (mặc định 5 MB) chỉ được liệt kê. Bộ đọc dùng postal-mime (MIT-0), thư viện Cloudflare khuyên dùng cho Email Workers. Thư được xử lý trong bộ nhớ, không lưu lại.
Tham số
| Tên | Vị trí | Kiểu | Bắt buộc | Mặc định | |
|---|---|---|---|---|---|
file | body | file | không | File .eml (multipart, body thô message/rfc822 hoặc file_base64). | |
raw | body | string | không | Hoặc mã nguồn thư dạng chuỗi. | |
attachments | body|query | string | không | base64 | base64, meta (không kèm nội dung) hoặc none. |
max_attachment_bytes | body|query | number | không | 5000000 | Tệp lớn hơn chỉ được liệt kê, không kèm nội dung. |
headers | body|query | boolean | không | true | false: bỏ danh sách header đầy đủ. |
no_html | body|query | boolean | không | false | Bỏ phần nội dung HTML. |
Ví dụ
curl -X POST "https://apibox.io.vn/v1/email-parse" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: message/rfc822" \
--data-binary 'From: =?UTF-8?B?Tmd1eeG7hW4gVsSDbiBBbg==?= <an@gmail.com>
To: support@example.vn
Subject: =?UTF-8?Q?H=C3=B3a_=C4=91=C6=A1n_th=C3=A1ng_11?=
Date: Tue, 10 Nov 2026 09:15:00 +0700
Message-ID: <CAF123@mail.gmail.com>
Authentication-Results: mx.example.vn; dkim=pass header.d=gmail.com; spf=pass; dmarc=pass
Content-Type: text/plain; charset=utf-8
Chào anh, em gửi hóa đơn.
Vào Th 2, 9 thg 11, 2026 lúc 10:00 Hỗ trợ <support@example.vn> đã viết:
> Anh gửi giúp hóa đơn nhé
'const res = await fetch('https://apibox.io.vn/v1/email-parse', {
method: 'POST',
headers: {
Authorization: 'Bearer YOUR_API_KEY',
'Content-Type': 'message/rfc822',
},
body: "From: =?UTF-8?B?Tmd1eeG7hW4gVsSDbiBBbg==?= <an@gmail.com>\nTo: support@example.vn\nSubject: =?UTF-8?Q?H=C3=B3a_=C4=91=C6=A1n_th=C3=A1ng_11?=\nDate: Tue, 10 Nov 2026 09:15:00 +0700\nMessage-ID: <CAF123@mail.gmail.com>\nAuthentication-Results: mx.example.vn; dkim=pass header.d=gmail.com; spf=pass; dmarc=pass\nContent-Type: text/plain; charset=utf-8\n\nChào anh, em gửi hóa đơn.\n\nVào Th 2, 9 thg 11, 2026 lúc 10:00 Hỗ trợ <support@example.vn> đã viết:\n> Anh gửi giúp hóa đơn nhé\n",
});
const data = await res.json();
console.log(data);import requests
res = requests.post(
"https://apibox.io.vn/v1/email-parse",
headers={"Authorization": "Bearer YOUR_API_KEY", "Content-Type": "message/rfc822"},
data="From: =?UTF-8?B?Tmd1eeG7hW4gVsSDbiBBbg==?= <an@gmail.com>\nTo: support@example.vn\nSubject: =?UTF-8?Q?H=C3=B3a_=C4=91=C6=A1n_th=C3=A1ng_11?=\nDate: Tue, 10 Nov 2026 09:15:00 +0700\nMessage-ID: <CAF123@mail.gmail.com>\nAuthentication-Results: mx.example.vn; dkim=pass header.d=gmail.com; spf=pass; dmarc=pass\nContent-Type: text/plain; charset=utf-8\n\nChào anh, em gửi hóa đơn.\n\nVào Th 2, 9 thg 11, 2026 lúc 10:00 Hỗ trợ <support@example.vn> đã viết:\n> Anh gửi giúp hóa đơn nhé\n".encode(),
timeout=30,
)
print(res.json())<?php
$ch = curl_init('https://apibox.io.vn/v1/email-parse');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_API_KEY', 'Content-Type: message/rfc822'],
CURLOPT_POSTFIELDS => 'From: =?UTF-8?B?Tmd1eeG7hW4gVsSDbiBBbg==?= <an@gmail.com>
To: support@example.vn
Subject: =?UTF-8?Q?H=C3=B3a_=C4=91=C6=A1n_th=C3=A1ng_11?=
Date: Tue, 10 Nov 2026 09:15:00 +0700
Message-ID: <CAF123@mail.gmail.com>
Authentication-Results: mx.example.vn; dkim=pass header.d=gmail.com; spf=pass; dmarc=pass
Content-Type: text/plain; charset=utf-8
Chào anh, em gửi hóa đơn.
Vào Th 2, 9 thg 11, 2026 lúc 10:00 Hỗ trợ <support@example.vn> đã viết:
> Anh gửi giúp hóa đơn nhé
',
]);
$response = curl_exec($ch);
print_r(json_decode($response, true));Kết quả trả về
{
"subject": "Hóa đơn tháng 11",
"from": {
"name": "Nguyễn Văn An",
"address": "an@gmail.com"
},
"sender": null,
"reply_to": [],
"to": [
{
"name": null,
"address": "support@example.vn"
}
],
"cc": [],
"bcc": [],
"date": "2026-11-10T02:15:00.000Z",
"message_id": "<CAF123@mail.gmail.com>",
"in_reply_to": null,
"references": [],
"return_path": null,
"delivered_to": null,
"text": "Chào anh, em gửi hóa đơn.\n\nVào Th 2, 9 thg 11, 2026 lúc 10:00 Hỗ trợ <support@example.vn> đã viết:\n> Anh gửi giúp hóa đơn nhé\n",
"html": null,
"latest_reply": "Chào anh, em gửi hóa đơn.",
"attachment_count": 0,
"attachments": [],
"authentication": {
"results": [
{
"dkim": "pass",
"spf": "pass",
"dmarc": "pass"
}
],
"dkim_signatures": [],
"received_spf": []
},
"received": [],
"list": {
"unsubscribe": null,
"unsubscribe_post": null,
"id": null
},
"headers": [
{
"key": "from",
"value": "=?UTF-8?B?Tmd1eeG7hW4gVsSDbiBBbg==?= <an@gmail.com>"
},
{
"…": "…"
}
],
"note": "Signatures are listed, not verified (DKIM / SPF results are those written by the receiving server). Nothing is stored."
}
Ứng dụng
- Chuyển e-mail gửi đến thành ticket hỗ trợ
- Tách file PDF, XML hóa đơn đính kèm trong thư nhà cung cấp
- Lưu trữ hộp thư dạng JSON để tìm kiếm
- Gỡ lỗi gửi thư: các chặng Received, kết quả SPF / DKIM / DMARC
Hỏi đáp
Có xác thực chữ ký DKIM không?
Không. API báo kết quả máy chủ nhận đã ghi trong Authentication-Results và liệt kê tên miền của DKIM-Signature; dùng /v1/email-auth để kiểm tra bản ghi DNS của tên miền.
Thư tối đa bao nhiêu?
Theo giới hạn dung lượng file của gói. Tệp đính kèm lớn hơn max_attachment_bytes (mặc định 5 MB, tổng 30 MB) chỉ được liệt kê, không kèm nội dung.
Có đọc file .msg của Outlook không?
Không, chỉ đọc MIME (.eml). Trong Outlook hãy lưu hoặc chuyển tiếp thư dạng .eml trước.
API liên quan
HTML sang Markdown
Chuyển HTML hoặc URL trang web bất kỳ thành Markdown gọn gàng chuẩn GitHub, hỗ trợ bảng, trích xuất bài viết chính và link tuyệt đối.
</>Markdown sang HTML
Chuyển Markdown chuẩn GitHub sang HTML, hỗ trợ bảng và gạch ngang. Kết quả được lọc sẵn script và event handler để chống XSS.
<✓>Lọc HTML an toàn
Loại bỏ script, iframe, form, event handler, style inline và link javascript: khỏi HTML không tin cậy trước khi hiển thị.