MailLandDocs
إرسال البريد

الإرسال الجماعي

إرسال رسائل البريد الإلكتروني لمستلمين متعددين في طلب API واحد

الإرسال الجماعي متاح فقط مع بيانات اعتماد تدفق التسويق. تُعيد بيانات اعتماد المعاملات 400 BATCH_NOT_ALLOWED_FOR_TRANSACTIONAL. يمنع هذا إساءة استخدام تدفقات المعاملات للبريد الإلكتروني الجماعي.

إرسال دفعة

POST https://api.mail.land/v1/transactional/send-batch
إرسال بريد إلكتروني جماعي
curl -X POST https://api.mail.land/v1/transactional/send-batch \
  -H "X-API-Key: ml_pem_Ab3Kx9mN2pQ7rT4wL8yD..." \
  -H "Content-Type: application/json" \
  -d '{
    "from": {
      "email": "[email protected]",
      "name": "Your Company"
    },
    "recipients": [
      {
        "email": "[email protected]",
        "name": "Alice",
        "variables": { "firstName": "Alice", "plan": "Pro" }
      },
      {
        "email": "[email protected]",
        "name": "Bob",
        "variables": { "firstName": "Bob", "plan": "Starter" }
      }
    ],
    "subject": "Hi {{firstName}}, check out what'\''s new",
    "htmlContent": "<h1>Hey {{firstName}}!</h1><p>Your {{plan}} plan just got an upgrade.</p>",
    "variables": {
      "companyName": "Acme Inc",
      "year": "2026"
    },
    "tags": ["product-update", "february-2026"],
    "batchName": "February Product Update"
  }'

حقول الطلب

الحقلالنوعمطلوبالوصف
fromobjectنعمعنوان المُرسِل (email واسم name اختياري)
recipientsarrayنعمقائمة المستلمين (ملاحظة: recipients، وليس to)
recipients[].emailstringنعمبريد المستلم الإلكتروني
recipients[].namestringلااسم عرض المستلم
recipients[].variablesobjectلامتغيرات القالب لكل مستلم
subjectstringمشروطمطلوب ما لم يتم استخدام templateId
templateIdstringلااستخدام قالب مُخزّن
htmlContentstringمشروطمحتوى HTML (مطلوب إذا لم يُحدَّد templateId)
textContentstringلانص بديل بتنسيق عادي
variablesobjectلامتغيرات عامة. تُطبَّق سواء استُخدم templateId أم لا؛ وعند تكرار المفتاح، تفوز قيمة recipients[].variables الخاصة بالمستلم
replyTostringلاعنوان الرد
batchNamestringلااسم مقروء لهذه الدفعة
tagsarrayلاوسوم للتحليلات وتصفية webhook
customHeadersobjectلاترويسات بريد إلكتروني مخصصة
trackingobjectلاتجاوزات تتبع الفتح/النقر
ipPoolIdstringلامحجوز لمجمّعات IP المخصّصة. غير متاح بعد: إرساله يُرجع 400 IP_POOL_NOT_FOUND. يُحذف.
scheduledAtdatetimeلاجدولة التسليم المستقبلي، بحد أقصى 7 أيام مقدَّماً
externalBatchIdstringلامعرّف الدفعة في نظامك: عند إرساله، تتم إعادته كما هو باعتباره batchId في الاستجابة
priorityenumلاLow، Normal (الافتراضي)، High، Critical
idempotencyKeystringلالمنع الإرسال المكرر لنفس المفتاح. يُفضَّل استخدام رأس X-Idempotency-Key

لاحظ الفرق في اسم الحقل: يستخدم الإرسال الجماعي recipients بينما يستخدم الإرسال الفردي to.

الاستجابة

الحالة: 202 Accepted

استجابة الدفعة
{
  "success": true,
  "batchId": "batch_f47ac10b58cc43729876fedcba098765",
  "messageIds": ["m_a1b2c3...", "m_d4e5f6..."],
  "totalRecipients": 2,
  "acceptedCount": 2,
  "rejectedCount": 0,
  "rejectedRecipients": [],
  "queuedAt": "2026-02-17T10:30:00Z",
  "estimatedCompletion": "2026-02-17T10:35:00Z",
  "isSandboxed": false
}
الحقلالنوعالوصف
batchIdstringمعرّف فريد للدفعة
messageIdsarrayمعرّفات الرسائل لكل مستلم (بادئة m_ للتسويق)
totalRecipientsintإجمالي المستلمين في الطلب
acceptedCountintالمستلمون المقبولون للتسليم
rejectedCountintالمستلمون المرفوضون
rejectedRecipientsarrayتفاصيل المستلمين المرفوضين مع الأسباب
estimatedCompletiondatetimeالوقت المقدّر لإتمام معالجة الدفعة

دمج المتغيرات

تتجاوز متغيرات كل مستلم المتغيرات العامة عند تداخل المفاتيح:

أولوية المتغيرات
{
  "variables": {
    "companyName": "Acme Inc",
    "greeting": "Hello"
  },
  "recipients": [
    {
      "email": "[email protected]",
      "variables": { "greeting": "Dear valued customer" }
    },
    {
      "email": "[email protected]"
    }
  ]
}

معالجة الأخطاء

أخطاء خاصة بالإرسال الجماعي:

الحالةالرمزالوصف
400BATCH_NOT_ALLOWED_FOR_TRANSACTIONALبيانات اعتماد المعاملات لا يمكنها إرسال دفعات
400VALIDATION_FAILEDتجاوز الحد الأقصى للمستلمين لكل دفعة (10,000)
400INVALID_REQUESTscheduledAt أبعد من 7 أيام ("لا يمكن جدولة البريد لأكثر من 7 أيام مقدَّماً")
400TEMPLATE_NOT_FOUNDلا يوجد لدى templateId قالب نشط في هذا الحساب (يُرجع أيضاً لقالب محذوف)
400IP_POOL_NOT_FOUNDلا يوجد لدى ipPoolId مجمّع مخصَّص لهذا الحساب
422TEMPLATE_VARIABLE_MISSINGينقص كل مستلم قيمة {{placeholder}} (إذا نقصت بعضهم فقط يُتخطّون ويُدرجون في rejectedRecipients بالسبب template_variable_missing: name). لا يوضع شيء في الطابور
400BATCH_SEND_FAILEDجميع المستلمين مقموعون
429RATE_LIMIT_EXCEEDEDتم تجاوز حد المعدل (على مستوى مساحة العمل/الخطة، وليس لكل بيانات اعتماد)
429QUOTA_EXCEEDEDاستُنفدت الحصة الشهرية

رموز مستوى توثيق الحساب ومحرك السياسات الموثَّقة لـ POST /v1/transactional/send، مثل SENDING_BLOCKED وACTION_REQUIRED وDAILY_LIMIT_EXCEEDED وMARKETING_PAUSED وغيرها، تنطبق هنا أيضاً.

النجاح الجزئي ممكن: قد يتم قبول بعض المستلمين بينما يُرفض آخرون (مثال: العناوين المحظورة). تحقق من rejectedRecipients في الاستجابة.

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

في هذه الصفحة