MailLandDocs
التحليلات

سجلات البريد الإلكتروني

البحث والتصفية وفحص سجلات التسليم التفصيلية لكل بريد إلكتروني أُرسل عبر Mail.Land

تسرد هذه الصفحة الرسائل التبادلية (transactional) فقط: يُستبعد بريد الحملات والأتمتة (بما فيه رسائل النظام 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منذ 30 يومًاتاريخ البداية
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.

يُطبَّق نطاق زمني افتراضي مدته 30 يومًا لأغراض الأداء. يُصفّي معامل البحث حسب بريد المستلم الإلكتروني أو سطر الموضوع أو معرّف الرسالة (غير حساس لحالة الأحرف).

إحصائيات السجل

احصل على إحصائيات مجمّعة لسجلات بريدك الإلكتروني:

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منذ 7 أيامتاريخ البداية
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 (3 منازل عشرية)

تشير ترويسات الاستجابة إلى حالة التخزين المؤقت:

الترويسةالقيم
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)
ipAddressعنوان IP للعميل (للفتح/النقر)
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تعذّرت قراءة المرفقات الآن؛ لم يتغير شيء، أعد المحاولة بعد قليل

تُنشئ إعادة المحاولة مهمة بريد إلكتروني جديدة بالمحتوى الأصلي وتضعها في قائمة الانتظار للتسليم. تُرسَل النسخ المعاد محاولتها دون تتبع الفتح/النقر.

الخطوات التالية

في هذه الصفحة