MailLandDocs
تحلیل‌ها

گزارش ایمیل‌ها

جستجو، فیلتر و بررسی گزارش‌های تحویل دقیق برای هر ایمیل ارسال‌شده از طریق Mail.Land

این صفحه فقط پیام‌های تراکنشی را فهرست می‌کند: ایمیل‌های کمپین و اتوماسیون (شامل پیام‌های سیستمی sys_*) در آن نمی‌آیند. برای تاریخچهٔ ارسال بازاریابی/اتوماسیون از نقطهٔ پایانی گیرندگان کمپین استفاده کنید (به کمپین‌ها نگاه کنید).

فهرست ایمیل‌ها

GET https://api.mail.land/v1/transactional/logs
List emails
curl "https://api.mail.land/v1/transactional/logs?limit=20" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."

پارامترهای پرس‌وجو

پارامترنوعپیش‌فرضتوضیح
cursorstring-نشانگر مبهم از nextCursor صفحهٔ قبل. برای صفحهٔ اول حذف کنید. نشانگر بدشکل یا دست‌کاری‌شده، خطای 400 INVALID_CURSOR برمی‌گرداند.
limitint20تعداد آیتم در هر صفحه
statusstring-فیلتر بر اساس وضعیت (مشاهده زیر)
searchstring-جستجو بر اساس گیرنده، موضوع یا شناسه پیام
fromdatetime۳۰ روز پیشتاریخ شروع
todatetimeاکنونتاریخ پایان
refreshboolfalseجلوگیری از نمایش صفحه‌ای قدیمی: دیگر حافظهٔ پنهانی برای شمارش وجود ندارد که دور زده شود

فیلترهای وضعیت

مقدارتطابق
queuedدر انتظار در صف
sentپذیرفته‌شده توسط MTA
deferred یا retryingتاخیر موقت
deliveredتحویل موفق
bouncedبرگشت سخت
failedخطای سیستم یا برگشت مدیریتی
openedگیرنده ایمیل را باز کرده
clickedگیرنده روی لینک کلیک کرده
complainedگیرنده شکایت اسپم ثبت کرده
Email logs response
{
  "items": [
    {
      "messageId": "t_a1b2c3d4e5f6",
      "recipient": "[email protected]",
      "subject": "Your order has shipped",
      "status": "delivered",
      "sentAt": "2026-02-17T12:34:56Z",
      "deliveredAt": "2026-02-17T12:34:58Z",
      "openedAt": "2026-02-17T13:15:00Z",
      "clickedAt": null,
      "bounceReason": null,
      "openCount": 2,
      "clickCount": 0
    },
    {
      "messageId": "t_d4e5f6a1b2c3",
      "recipient": "[email protected]",
      "subject": "Invoice #1234",
      "status": "bounced",
      "sentAt": "2026-02-17T12:30:00Z",
      "deliveredAt": null,
      "openedAt": null,
      "clickedAt": null,
      "bounceReason": "550 5.1.1 Mailbox not found",
      "openCount": 0,
      "clickCount": 0
    }
  ],
  "nextCursor": "eyJ2IjoxLCJzIjoiY3JlYXRlZGF0OmRlc2MiLCJrIjoi...",
  "hasMore": true
}

اولویت وضعیت

فیلد status بالاترین اولویت رویداد برای هر ایمیل را نشان می‌دهد:

  1. complained (بالاترین)
  2. clicked
  3. opened
  4. وضعیت تحویل: queued → sent → deferred → delivered → bounced → failed

برای مثال، اگر ایمیلی تحویل شده و سپس باز شده باشد، وضعیت opened نمایش داده می‌شود.

به طور پیش‌فرض، بازه زمانی ۳۰ روزه برای عملکرد اعمال می‌شود. پارامتر جستجو بر اساس ایمیل گیرنده، موضوع یا شناسه پیام فیلتر می‌کند (غیر حساس به حروف بزرگ و کوچک).

آمار گزارش

آمار تجمیعی برای گزارش‌های ایمیل خود دریافت کنید:

GET https://api.mail.land/v1/transactional/logs/stats
Get log stats
curl "https://api.mail.land/v1/transactional/logs/stats" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
پارامترنوعپیش‌فرضتوضیح
fromdatetime۷ روز پیشتاریخ شروع
todatetimeاکنونتاریخ پایان
emailTypeint-0 = تراکنشی، 1 = بازاریابی. حذف‌کردنِ آن، همهٔ انواع ایمیل را پوشش می‌دهد: برخلاف «فهرست ایمیل‌ها» در بالا که فقط تراکنشی را نشان می‌دهد.
refreshboolfalseدور زدن حافظه پنهان
Log stats response
{
  "total": 4750,
  "accepted": 4750,
  "sent": 4700,
  "delivered": 4680,
  "opened": 1498,
  "clicked": 195,
  "bounced": 38,
  "complained": 1,
  "failed": 12,
  "queued": 20,
  "deliveryRate": 99.57,
  "openRate": 32.01,
  "clickRate": 13.02,
  "bounceRate": 0.81,
  "complaintRate": 0.021,
  "source": "clickhouse",
  "queryTimeMs": 32
}

محاسبات نرخ:

نرخفرمول
deliveryRatedelivered / sent * 100
openRateopened / delivered * 100
clickRateclicked / delivered * 100
bounceRatebounced / sent * 100
complaintRatecomplained / sent * 100 (۳ رقم اعشار)

هدرهای پاسخ وضعیت حافظه پنهان را نشان می‌دهند:

هدرمقادیر
X-CacheHIT، MISS یا FRESH
X-Stats-Sourcecache یا clickhouse
Cache-Controlهمیشه no-store, no-cache, must-revalidate

جزئیات ایمیل

جزئیات کامل یک ایمیل خاص، از جمله خط زمانی رویداد را دریافت کنید:

GET https://api.mail.land/v1/transactional/logs/{messageId}
Get email detail
curl https://api.mail.land/v1/transactional/logs/t_a1b2c3d4e5f6 \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
Email detail response
{
  "messageId": "t_a1b2c3d4e5f6",
  "recipient": "[email protected]",
  "fromEmail": "[email protected]",
  "subject": "Your order has shipped",
  "status": "opened",
  "sentAt": "2026-02-17T12:34:56Z",
  "deliveredAt": "2026-02-17T12:34:58Z",
  "openedAt": "2026-02-17T13:15:00Z",
  "clickedAt": null,
  "createdAt": "2026-02-17T12:34:55Z",
  "bounceReason": null,
  "bounceCategory": null,
  "ipAddress": null,
  "retryCount": 0,
  "smtpResponse": "250 2.0.0 OK",
  "openCount": 2,
  "clickCount": 0,
  "htmlContent": "<html>...</html>",
  "textContent": "Your order has shipped...",
  "events": [
    {
      "eventType": "delivered",
      "timestamp": "2026-02-17T12:34:58Z",
      "ipAddress": null,
      "userAgent": null,
      "linkUrl": null,
      "bounceType": null,
      "bounceReason": null,
      "smtpResponse": "250 2.0.0 OK",
      "deviceType": null,
      "browser": null,
      "country": null,
      "city": null
    },
    {
      "eventType": "opened",
      "timestamp": "2026-02-17T13:15:00Z",
      "ipAddress": "203.0.113.45",
      "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)",
      "linkUrl": null,
      "bounceType": null,
      "bounceReason": null,
      "smtpResponse": null,
      "deviceType": "desktop",
      "browser": "Chrome",
      "country": "US",
      "city": "San Francisco"
    },
    {
      "eventType": "opened",
      "timestamp": "2026-02-17T14:30:00Z",
      "ipAddress": "203.0.113.45",
      "userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 17_0)",
      "linkUrl": null,
      "bounceType": null,
      "bounceReason": null,
      "smtpResponse": null,
      "deviceType": "mobile",
      "browser": "Safari",
      "country": "US",
      "city": "San Francisco"
    }
  ]
}

آرایه events از ClickHouse تامین شده و بر اساس زمان مرتب شده است. اگر ClickHouse به طور موقت در دسترس نباشد، جزئیات ایمیل همچنان از PostgreSQL برگردانده می‌شود اما events آرایه‌ای خالی خواهد بود.

فیلدهای رویداد

فیلدتوضیح
eventTypedelivered، opened، clicked، bounced، complained، و همچنین accepted، sent، deferred، admin_bounce، oob_bounce، expired
timestampزمان وقوع رویداد (UTC)
ipAddressIP مشتری (برای بازشدن‌ها/کلیک‌ها)
userAgentرشته عامل کاربر مشتری
linkUrlURL کلیک‌شده (برای رویدادهای clicked)
bounceTypehard، soft یا unknown (برای رویدادهای bounced)
bounceReasonپاسخ SMTP (برای رویدادهای bounced)
smtpResponseپاسخ سرور راه دور (برای رویدادهای delivered)
deviceTypedesktop، mobile یا tablet
browserنام مرورگر (Chrome، Safari، Firefox و غیره)
countryکد کشور ISO
cityنام شهر

تلاش مجدد برای ایمیل ناموفق

تحویل ایمیل برگشت‌خورده یا ناموفق را دوباره امتحان کنید:

POST https://api.mail.land/v1/transactional/logs/{messageId}/retry
Retry failed email
curl -X POST https://api.mail.land/v1/transactional/logs/t_a1b2c3d4e5f6/retry \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."

پیام باید در وضعیت Bounced یا Failed باشد و گیرنده نباید در لیست حذف باشد.

وضعیتکدتوضیح
200-تلاش مجدد پذیرفته شد
400INVALID_REQUESTایمیل برگشت‌خورده یا ناموفق نیست
400RECIPIENT_SUPPRESSEDگیرنده در لیست حذف است
404RESOURCE_NOT_FOUNDپیام یافت نشد: نه EMAIL_NOT_FOUND
422DOMAIN_NOT_VERIFIEDدامنهٔ ارسال دیگر تأیید نشده است
429MARKETING_PAUSEDارسال بازاریابی برای این فضای کاری فعلاً متوقف است
422RETRY_ATTACHMENTS_UNAVAILABLEپیام پیوست داشت که دیگر قابل بازیابی نیست؛ به‌جای آن دوباره با پیوست‌ها ارسال کنید
422RETRY_ATTACHMENTS_UNKNOWNپیام پیش از ثبت پیوست‌ها ارسال شده و تلاش دوباره نمی‌تواند پیوست‌ها را تضمین کند؛ به‌جای آن دوباره ارسال کنید
429PLATFORM_CAPACITY_PROTECTIONارسال جدید برای محافظت از ظرفیت پلتفرم کوتاه‌مدت متوقف است؛ چیزی تغییر نکرد، کمی بعد دوباره تلاش کنید
503RETRY_ATTACHMENT_STORAGE_UNAVAILABLEپیوست‌ها در این لحظه خوانده نشدند؛ چیزی تغییر نکرد، کمی بعد دوباره تلاش کنید

تلاش مجدد یک کار ایمیل جدید با محتوای اصلی ایجاد می‌کند و آن را برای تحویل در صف قرار می‌دهد. نسخه‌های ارسال‌شدهٔ دوباره بدون ردیابی بازشدن/کلیک ارسال می‌شوند.

مراحل بعدی

در این صفحه