نظرة عامة للمطورين على REST API من TrekMail

تعرّف على آلية عمل REST API من TrekMail، بما يشمل مصادقة رموز Bearer، والوصول حسب الخطة، وحدود المعدل، وتنسيقات الاستجابة.

تفاصيل المقال

النوع والصعوبة والخطط ومعلومات آخر تحديث.

النوع
مرجع
الصعوبة
متوسط
الخطط
Nano · Starter · Pro · Agency
آخر تحديث
23 أغسطس 2026

تتيح لك TrekMail API إدارة النطاقات وصناديق البريد وإعادة التوجيه وDNS وترحيل البريد الإلكتروني وعمليات بريد الويب من عميل HTTP أو وكيل ذكاء اصطناعي. ويشمل ذلك قراءة البريد وإرساله، والمسودات، والجدولة، والمجلدات، وجهات الاتصال، والتقويمات، والهويات، والقوالب، والمرسلين المحظورين. تستخدم الطلبات المصادق عليها رمز Bearer، وتكون الاستجابات بصيغة JSON، ويجري تدقيق نشاط API.

ما الذي تحصل عليه

  • REST API v1 بتنسيق JSON للطلبات والاستجابات.
  • مصادقة رمز Bearer: لا ملفات تعريف ارتباط أو جلسات لاستدعاءات API المصادق عليها.
  • مفاتيح تكرار آمن في عمليات الكتابة التي تتطلبها، لمنع تكرار العمل أثناء إعادة المحاولة.
  • تحديد المعدل لكل رمز مع ترويسات Retry-After.
  • سجل تدقيق ظاهر في لوحة التحكم ضمن وكلاء الذكاء الاصطناعي وAPI → سجل التدقيق.
  • خادم MCP مزود بكتالوج مصفى وفق بيانات الاعتماد والنقل وإعدادات الأمان للاتصال الحالي. ولذلك لا يرى اتصال المشروع المحدود إلا الأدوات التي يمكنه استخدامها.
  • أسماء النطاقات المستعارة: اربط عناوين مخصصة للاستقبال فقط على نطاق ثانوي بالأجزاء المحلية نفسها على نطاق أساسي، مع حالات تسليم محفوظة مقابل نشطة وإزالة آمنة. راجع أسماء النطاقات المستعارة عبر API وMCP.
  • بنية الرمزين: رموز عمليات منفصلة للبنية التحتية، ورموز رسائل لعمليات البريد الإلكتروني الكاملة مثل القراءة والإرسال وإنشاء المسودات والجدولة وجهات الاتصال والتقويمات والهويات والقوالب والمجلدات.
  • رؤى قابلية التسليم والارتدادات الصادرة: احصل من لوحة التحكم على ملخص الرسائل المرسلة والمسلّمة والارتدادات الدائمة والمؤقتة، إلى جانب رموز SMTP واستجاباته لكل مستلم. راجع قابلية التسليم والارتدادات.
  • استخدام مساحة صندوق البريد: تعرض list_mailboxes وget_mailbox القيم used_mb وquota_mb وallocation_mb وis_pooled، ليتمكن الوكيل من اكتشاف صناديق البريد التي تقترب من حدها دون الوصول إلى لوحة التحكم.
  • إدارة White Label: افحص الإعداد، وأدر العلامة التجارية لكل نطاق، وادع العملاء، وتحكم في الأدوار والنطاقات، وعلّق الوصول أو استعده، وراجع النشاط عبر API أو MCP. راجع دليل العلامة التجارية ودليل إدارة الفريق.

Drive API وأتمتة الملفات

يعد Drive جزءا من واجهة API العامة. وهو يغطي مساحات Account Drive وDrive الخاصة بصناديق البريد، والاستخدام، وتصفح المجلدات، ورفع الملفات، وإدارة الملفات والمجلدات، وسلة المحذوفات، والإجراءات الجماعية، وروابط المشاركة العامة، وإدارة كلمات مرور أجهزة المزامنة، وحالة إضافة Drive Storage للقراءة فقط.

يستخدم Drive أحد عشر نطاقا لرمز العمليات: drive:account:read وdrive:account:write وdrive:account:share وdrive:account:purge وdrive:mailbox:read وdrive:mailbox:write وdrive:mailbox:share وdrive:mailbox:purge وdrive:addon:read وdrive:devices:read وdrive:devices:write. تظل إجراءات فوترة إضافة Drive وشرائها وتغيير حجمها وإلغائها متاحة عبر لوحة التحكم فقط، ولا تعرض كعمليات كتابة عبر API أو MCP.

ابدأ بـنظرة عامة على Drive API أو البدء السريع مع Drive API.

بنية الرمزين

تستخدم API نوعين مستقلين من الرموز. يمكنك استخدام أحدهما أو كليهما حسب احتياجاتك:

نوع الرمز البادئة ما الذي يتيحه
رمز العمليات tm_live_ أدوات الحساب والبنية التحتية: White Label والنطاقات وDNS وصناديق البريد والدعوات وDrive وعمليات الترحيل وSMTP والتذاكر والفوترة وCloudflare
رمز الرسائل tm_msg_ عمليات بريد الويب: الرسائل والمجلدات والمرفقات والمسودات والإرسال المجدول والإبلاغ عن الرسائل المزعجة وغير المزعجة والإجراءات الجماعية وجهات الاتصال ومجموعاتها والتقويم ومساعدات الإنشاء والهويات والقوالب والمرسلون المحظورون

لرموز العمليات ورموز الرسائل نطاقات وحدود معدل منفصلة. ويمكن لوكيل واحد استخدام الرمزين في الوقت نفسه من خلال إعدادهما في بيئة خادم MCP.

تتوفر رموز الرسائل في خطتي Pro وAgency.

قبل أن تبدأ

  • تتيح جميع الخطط الوصول إلى API:
    • Nano: أداة التحقق من البريد الإلكتروني. أضف إضافة Drive Storage للوصول الكامل إلى Drive API وMCP.
    • Starter: وصول كامل إلى Drive وأداة التحقق من البريد الإلكتروني، ووصول للقراءة فقط إلى بقية أقسام البنية التحتية. استخدم لوحة التحكم لإجراءات الكتابة فيها.
    • Pro / Agency: وصول أساسي كامل إلى API، بما في ذلك رموز الرسائل. تضاف نطاقات White Label أثناء نشاط الفترة التجريبية أو الإضافة المدفوعة.
  • هل توصل وكيل ذكاء اصطناعي؟ أضف https://trekmail.net/mcp كخادم MCP بعيد في أي عميل متوافق. وإذا كان يدعم التفويض عبر المتصفح، فلن تحتاج إلى رمز يدوي. راجع توصيل وكلاء الذكاء الاصطناعي (MCP) لمعرفة خيارات الاتصال البعيد وCLI وسطح المكتب والجسر والاستضافة الذاتية.
  • هل تكتب تكاملك الخاص؟ أنشئ رمز tm_live_ ضمن وكلاء الذكاء الاصطناعي وAPI → الرموز → إنشاء رمز وأرسله بصيغة Authorization: Bearer …. راجع إنشاء رموز API وإدارتها.
  • هل أنت جديد على API؟ انقر على بدء الجولة أعلى صفحة وكلاء الذكاء الاصطناعي وAPI للاطلاع على شرح موجز لطرق الاتصال وإدارة الرموز والتطبيقات المتصلة وسجل التدقيق.

آلية عمل المصادقة

يجب أن يتضمن كل طلب رمزك في ترويسة Authorization:

Authorization: Bearer tm_live_abc123...

تبدأ رموز العمليات بـtm_live_ وتبدأ رموز الرسائل بـtm_msg_. يعرض كلاهما مرة واحدة عند الإنشاء ولا يمكن عرضهما مجددا.

إذا كان الرمز مفقودا أو ملغى أو منتهي الصلاحية، فستعيد API الرمز 401 مع رمز الخطأ unauthenticated.

عنوان URL الأساسي وتحديد الإصدارات

توجد جميع نقاط النهاية ضمن:

https://trekmail.net/api/v1

يظهر عنوان URL الأساسي في لوحة تحكم وكلاء الذكاء الاصطناعي وAPI ضمن المرجع السريع. يظهر الإصدار في مسار URL. وعند تقديم v2، إن حدث ذلك، سيستمر v1 في العمل.

تنسيق الاستجابة

تعيد الاستجابات الناجحة JSON مع مفتاح data للمورد الفردي أو القائمة المقسمة إلى صفحات:

{
  "data": [
    { "id": 1, "domain": "example.com", "status": "active" }
  ],
  "links": { "next": "...", "prev": null },
  "meta": { "current_page": 1, "last_page": 1, "total": 1 }
}

تتبع استجابات الأخطاء بنية موحدة:

{
  "error": {
    "code": "unauthenticated",
    "message": "Invalid or expired API token",
    "hint": "Check that your token is correct and has not been revoked.",
    "request_id": "req_abc123",
    "retryable": false
  }
}

معرّفات الطلبات

تتضمن كل استجابة ترويسة X-Request-Id. ويمكنك أيضا تمرير معرّفك عبر X-Request-Id في الطلب. سيعاد إليك ويسجل في مسار التدقيق.

حدود المعدل

يطبق حد معدل لكل دقيقة على كل رمز. وعند بلوغ الحد، تعيد API الرمز 429 مع ترويسة Retry-After التي تحدد موعد إعادة المحاولة.

للعمليات المدمرة، أي طلبات الحذف، حد يومي إضافي لكل رمز وفترة انتظار بين عمليات الحذف المتتالية.

لعمليات كتابة الترحيل، البدء والإلغاء وإعادة المحاولة، حد مخصص قدره 10 طلبات في الدقيقة لكل رمز، إلى جانب سقف تزامن على مستوى الخادم يعيد 503 عندما تعمل عمليات ترحيل كثيرة عالميا.

تستخدم رموز الرسائل حدودا منفصلة. القيم الافتراضية هي 30 طلب قراءة في الدقيقة لكل رمز، و60 طلب إرسال في الدقيقة لكل رمز، و5,000 قراءة ناجحة يوميا لكل رمز، و100 عملية إرسال عبر API يوميا لصندوق بريد واحد. ولعداد أمان إرسال ثان حد افتراضي قدره 500 لكل رمز يوميا، وعادة يطبق حد صندوق البريد الأقل أولا. لا تحل إجراءات حماية API هذه محل حدود SMTP المُدار لخطتك أو حدود مزود خارجي.

التكرار الآمن

تتطلب نقاط النهاية التي تغير الحالة والمعلّمة بأنها آمنة التكرار ترويسة Idempotency-Key. ويشمل ذلك عمليات الإنشاء والتحديث والإرسال والحذف التي قد يؤدي تكرارها تلقائيا إلى ازدواج العمل. لا تتطلب إجراءات POST الشبيهة بالقراءة، مثل اكتشاف المزود أو اختبار الاتصال، هذه الترويسة؛ تحقق من جدول نقاط النهاية أو مواصفات OpenAPI. وإذا أرسلت المفتاح نفسه مع النص نفسه، تعيد API الاستجابة الأصلية دون إنشاء نسخ مكررة.

Idempotency-Key: create-mailbox-alice-2024

إذا أرسلت المفتاح نفسه مع نص مختلف، تعيد API الخطأ 409 Conflict.

تخصيص مساحة صندوق البريد

تقبل كل نقطة نهاية تنشئ صندوق بريد أو دعوة، POST /api/v1/mailboxes و/api/v1/mailboxes:bulk و/api/v1/mailboxes/invites و/api/v1/mailboxes/invites:bulk، عددا صحيحا اختياريا باسم storage_allocation_mb.

القيمة المعنى
محذوفة (أو null) يستخدم صندوق البريد مجموعة الحساب المشتركة، وهذا هو الإعداد الافتراضي.
عدد صحيح موجب (MB) صندوق البريد مخصص. يقتطع ذلك المقدار بالضبط من مجموعة الحساب لهذا الصندوق وحده.

يجري التحقق من التخصيصات مقابل المجموعة النشطة بعد طرح صناديق البريد المخصصة الحالية والدعوات المخصصة المعلقة. وتتحقق نقاط النهاية الجماعية أيضا من مجموع التخصيصات في الدفعة، وترفض الدفعة بأكملها مع 422 storage_pool_exceeded إذا كانت ستتجاوز السعة. تتجدد المجموعة عند حذف صندوق بريد مخصص، أو استرداد دعوة، حيث ينتقل التخصيص إلى صندوق البريد الجديد، أو انتهاء صلاحية دعوة معلقة.

بالنسبة إلى الدعوات، يسجل التخصيص على رمز الوصول وينسخ إلى صندوق البريد الجديد وقت الاسترداد. وإذا لم تعد المجموعة تستوعب التخصيص المطلوب وقت الاسترداد، مثلا لأن مسؤولا آخر زاد تخصيصه المخصص في هذه الأثناء، فإن الاسترداد يخفض بسلاسة صندوق البريد الجديد إلى الوضع المشترك بدلا من الفشل، ويرى المستلم إشعارا في صفحة النجاح.

وصول صندوق البريد إلى Drive

يحمل كل صندوق بريد مستوى drive_access يحدد مقدار ما يصل إليه مستخدمه من Drive في بريد الويب. يظهر المستوى في مورد صندوق البريد ويمكن تعيينه عبر PATCH /api/v1/mailboxes/{id} أو، لعدة صناديق دفعة واحدة، عبر POST /api/v1/mailboxes:drive-access.

القيمة المعنى
full كل شيء: علامة تبويب Drive والرفع والمشاركة والبحث عن الملفات والمزامنة مع الكمبيوتر. وهذا هو الإعداد الافتراضي.
attachments_only لا Drive في بريد الويب ولا مزامنة. يظل الإرسال متاحا، ويرسل الملف الذي يتجاوز حد المرفقات كرابط تنزيل، وتحذف تلك النسخة بعد مدة الاحتفاظ.
disabled لا Drive، ولا يمكن إرفاق ملف يتجاوز الحد على الإطلاق.

مساحة التخزين مشتركة على مستوى الحساب، ولذلك يحدد هذا الخيار مقدار ما يستطيع شخص واحد ملؤه من تلك المجموعة بالملفات.

تعليق تسجيل الدخول إلى صندوق البريد

يمكن تعليق تسجيل الدخول إلى صندوق بريد مع استمرار استلامه للبريد: يرفض بريد الويب وIMAP وSMTP وكلمات مرور الأجهزة، وتنتهي الجلسات المفتوحة، لكن التسليم لا يتأثر، فلا يرتد شيء وتنتظر الرسائل حتى استعادة تسجيل الدخول. اضبطه عبر POST /api/v1/mailboxes/{id}:suspend-login ومعه :resume-login، أو لعدة صناديق عبر POST /api/v1/mailboxes:login-access.

يعرض مورد صندوق البريد الحالة في login_suspended وlogin_suspended_at وlogin_suspended_reason. اقرأ login_suspended لمعرفة ما إذا كان الشخص يستطيع تسجيل الدخول، وstatus لمعرفة ما إذا كان صندوق البريد نفسه يعمل. يبقى الصندوق المعلق active لأنه ما زال يستقبل البريد. أما :pause فهو مختلف: يضبط status على disabled ويوقف التسليم أيضا.

راجع تعليق تسجيل الدخول إلى صندوق البريد عبر API.

تقبل نقطة النهاية الجماعية محددا واحدا بالضبط من mailbox_ids أو domain_id أو all، وتعيد ما نفذته:

{ "data": { "drive_access": "attachments_only", "matched": 24, "updated": 21, "skipped_shared": 3 } }

domain_id هو المحدد المناسب عندما يمثل النطاق عميلا واحدا. تعد صناديق البريد الموجودة بالفعل على المستوى المطلوب ضمن matched لا updated، ولذلك يمكن تكرار الاستدعاء بأمان.

ترفض صناديق البريد المشتركة في نقطة النهاية الفردية مع 422 drive_access_not_applicable، وتتجاوزها نقطة النهاية الجماعية وتحسبها: فليس لها مستخدم بريد ويب خاص بها، بل يفتحها الأعضاء بمستوياتهم، ولن تغير قيمة مخزنة في صف الصندوق المشترك شيئا.

ينطبق القيد على API والواجهة معا. لا تظهر مساحة Drive لصندوق البريد المقيد في GET /api/v1/drive/spaces، وتجيب ملفاته بالرمز 404 عند طلبها بالمعرّف، ولا يمكن إنشاء جهاز مزامنة له.

عناوين إعادة التوجيه

تعيد GET /api/v1/domains/{id}/forwarding-addresses أكثر من القائمة، لأن أمرين يتعلقان بعنوان إعادة التوجيه لا يظهران في العنوان نفسه:

{
  "data": [ { "id": 8, "address": "sales@acme.com", "local_part": "sales",
              "domain_id": 4, "recipients": ["team@example.net"], "is_active": true } ],
  "limits": { "used": 1, "max": 100, "recipients_per_address": 15 },
  "delivery": { "active": true, "requires_plan": "pro",
                "paused_until": null, "paused_reason": null }
}
  • يطبق limits.max لكل نطاق ويعتمد على الخطة: 100 في Pro، و300 في Agency، و25 محفوظة ولكن غير نشطة في Nano أو Starter.
  • يوضح delivery.active ما إذا كانت هذه القواعد تنقل البريد الآن. تكون قيمته false في خطة أدنى من requires_plan، وتكون false أثناء تعيين paused_until، أي عندما تجاوز الحساب معدل الإرسال بالساعة؛ راجع حدود الإرسال لكل خطة. يمكن أن تكون القاعدة is_active: true ومع ذلك لا تسلّم، لذا اقرأ delivery وليس is_active فقط قبل الإبلاغ بأن إعادة التوجيه تعمل.

يسمح بالإنشاء في خطة لا تستطيع التسليم، ويعيد 201: تحفظ القاعدة وتبدأ العمل عند الترقية. وهذا يماثل لوحة التحكم التي تعرض تلك القواعد كمحفوظة وغير نشطة.

تعود حالات الرفض بالرمز 422 مع تعيين error.code إلى validation_error أو limit_exceeded، وذلك إذا كان العنوان مستخدما بالفعل في النطاق، أو كان المستلم على النطاق نفسه مما ينشئ حلقة، أو لم يكن لنطاق المستلم MX عامل، أو امتلأت حصة النطاق.

يتطلب POST وDELETE في نقاط النهاية هذه مفتاح Idempotency-Key، بينما لا يتطلبه PATCH.

سجل التسليم

تعيد GET /api/v1/domains/{id}/forwarding-addresses/{addressId}/log ما حدث فعليا للبريد الحديث، بدءا بالأحدث:

{
  "data": [
    { "id": 91, "occurred_at": "2026-07-27T09:12:04+00:00", "outcome": "delivered",
      "from": "rfq@northgatesupply.com", "to": "sales@example.net",
      "smtp_code": "2.0.0", "smtp_response": "250 2.0.0 OK" }
  ],
  "address": "sales@acme.com",
  "window": { "retention_days": 30, "max_events": 200 }
}

تكون outcome واحدة من delivered أو deferred، أي فشل مؤقت مع استمرار إعادة المحاولة، أو failed، أي أن خادم المستلم رفضها، أو blocked. وتعني الأخيرة أن مرشح الرسائل المزعجة لدينا أوقف الرسالة قبل إعادة التوجيه، فلم تصل إلى المستلم أصلا. ومعاملة blocked كارتداد ستدفع شخصا إلى ملاحقة خادم الاستلام بسبب مشكلة حدثت لدينا.

limit بين 1 و200، والقيمة الافتراضية 100، هو المعامل الوحيد. وتمثل النافذة مدة الاحتفاظ للخطة: 30 يوما في Agency و7 أيام في غيرها. ولا توجد أحداث أقدم للاستعلام عنها لأن أحداث إعادة التوجيه تحذف دوريا.

صناديق البريد المشتركة للفريق

صندوق البريد المشترك هو صندوق وارد للفريق مثل support@ أو sales@ يفتحه الأعضاء عبر حساب صندوق بريدهم العادي، في بريد الويب، وعند تمكين الوصول الأصلي، كمجلد IMAP مفوض. لا توجد كلمة مرور مشتركة أو عملية دخول منفصلة. الوصول موحد: يستطيع كل عضو القراءة، وتتحكم علامة can_send واحدة فيما إذا كان يستطيع الرد باسم العنوان (true) أو تكون صلاحيته للقراءة فقط (false). ولا توجد أدوار للأعضاء.

تعيد GET /api/v1/mailboxes وGET /api/v1/mailboxes/{id} الآن mailbox_type بقيمة "user" أو "shared"، والقيمة المنطقية is_shared، كما تتضمن صناديق البريد المشتركة shared_member_count. استخدم هذه الحقول لتمييز صندوق الفريق عن الصندوق العادي قبل استدعاء نقاط نهاية الأعضاء.

نقطة النهاية الطريقة النطاق المطلوب ما الذي تفعله
/api/v1/mailboxes/{id}/members GET mailboxes:read تسرد أعضاء صندوق بريد مشترك، ولكل منهم member_mailbox_id وemail وcan_read وcan_send
/api/v1/mailboxes/{id}/members POST mailboxes:write تضيف عضوا، والنص {member_mailbox_id, can_send?}، والقيمة الافتراضية لـcan_send هي true
/api/v1/mailboxes/{id}/members/{member} PATCH mailboxes:write تبدل وصول العضو إلى الرد، بالنص {can_send}
/api/v1/mailboxes/{id}/members/{member} DELETE mailboxes:write تزيل عضوا، ويحتفظ صندوق البريد المشترك دائما بعضو واحد على الأقل
/api/v1/shared-mailboxes POST mailboxes:create تنشئ صندوق بريد مشتركا، بالنص {domain_id, local_part, display_name, member_mailbox_ids[], storage_shared?, storage_mb?}
/api/v1/mailboxes/{id}/convert-to-shared POST mailboxes:write تحول صندوق بريد موجودا إلى مشترك، بالنص {member_mailbox_ids[]}، وتغير كلمة المرور القديمة حتى لا يعود قادرا على تسجيل الدخول؛ وتعيد 202 conversion_pending مع إعادة محاولة تلقائية إن لم تتأكد مزامنة الخلفية بعد
/api/v1/mailboxes/{id}/convert-to-regular POST mailboxes:write تحول صندوق بريد مشتركا إلى عادي، بالنص {password}، وتزيل الأعضاء وتعين كلمة مرور جديدة لتسجيل الدخول

تعيد نقاط نهاية الأعضاء استخدام نطاقي mailboxes:read وmailboxes:write الحاليين. ولا يوجد نطاق منفصل لصندوق البريد المشترك.

لاكتشاف الوصول الأصلي من تطبيق البريد، استدع GET /api/v1/mailboxes/{member_mailbox_id}/client-setup لصندوق بريد عضو عادي. يعرض كائن shared_mailboxes جاهزية الوصول الأصلي الدائمة، وجاهزية Send As الفعلية وسببها، ومسارات Inbox وSent وArchive وJunk الدقيقة، والعمليات المسموح بها. تمثل can_send صلاحية إمكانية الرد المعينة، وليست دليلا على جاهزية SMTP حاليا. لا تعيد نقطة النهاية كلمة مرور مطلقا. ويؤدي استدعاؤها بمعرّف صندوق البريد المشترك إلى 422 direct_login_unavailable لأن العنوان المشترك لا يمكنه المصادقة مباشرة.

تؤدي إزالة عضو أو تغيير can_send أو تحويل صندوق مشترك إلى عادي إلى مزامنة أذونات خادم البريد عند تمكين الوصول الأصلي. ويمكن إعادة محاولة استجابة 503 native_access_sync_failed، وهي تضمن بقاء العضوية أو الإذن أو نوع صندوق البريد دون تغيير بدلا من تطبيق العملية جزئيا.

نقاط النهاية المتاحة

لدى Drive مرجعه الخاص ولا يتكرر هنا، راجع نظرة عامة على Drive API. وتوصف نقاط نهاية SMTP على مستوى الحساب، المحفوظة للتوافق مع الإصدارات السابقة، ضمن توجيه SMTP لكل نطاق بدلا من إدراجها كنقاط حالية.

نقطة النهاية الطريقة النطاق المطلوب
/api/v1/domains GET domains:read
/api/v1/domains/{id} GET domains:read
/api/v1/domains/{id}/matching-addresses GET domains:read
/api/v1/domains/{id}/matching-addresses PUT domains:write
/api/v1/domains/{id}/matching-addresses DELETE domains:write
/api/v1/domains/{id}/dns-requirements GET domains:dns:read
/api/v1/domains/{id}/dns-recheck POST domains:dns:recheck
/api/v1/domains/{id}/spam-metrics GET domains:read
/api/v1/domains/{id}/spam-metrics/summary GET domains:read
/api/v1/domains/{id}/deliverability GET domains:read
/api/v1/domains/{id}/bounces GET domains:read
/api/v1/domains/{id}/signature GET domains:read
/api/v1/domains/{id}/forwarding-addresses GET domains:read
/api/v1/domains/{id}/forwarding-addresses/{addressId}/log GET domains:read
/api/v1/dns-checks/{id} GET domains:dns:read
/api/v1/mailboxes GET mailboxes:read
/api/v1/mailboxes POST mailboxes:create
/api/v1/mailboxes/{id} PATCH mailboxes:write
/api/v1/mailboxes/invites POST mailboxes:invites:create
/api/v1/mailboxes/invites:bulk POST mailboxes:invites:create
/api/v1/mailboxes:bulk POST mailboxes:create
/api/v1/mailboxes/{id}/forwarding GET mailboxes:forwarding:read
/api/v1/mailboxes/{id}/forwarding PUT mailboxes:forwarding:write
/api/v1/mailboxes/{id}/rules GET mailboxes:rules:read
/api/v1/mailboxes/{id}/rules POST mailboxes:rules:write
/api/v1/mailboxes/{id}/rules/{ruleId} GET mailboxes:rules:read
/api/v1/mailboxes/{id}/rules/{ruleId} PUT mailboxes:rules:write
/api/v1/mailboxes/{id}/rules/{ruleId} DELETE mailboxes:rules:write
/api/v1/mailboxes/{id}/rules/reorder PATCH mailboxes:rules:write
/api/v1/mailboxes/{id}/auto-reply GET mailboxes:auto-reply:read
/api/v1/mailboxes/{id}/auto-reply PUT mailboxes:auto-reply:write
/api/v1/mailboxes/{id}/sieve GET mailboxes:rules:read
/api/v1/mailboxes/{id}/sieve PUT mailboxes:rules:write
/api/v1/mailboxes/{id}:delete-intent POST mailboxes:delete
/api/v1/delete-intents/{id}:confirm POST mailboxes:delete
/api/v1/me GET (أي رمز عمليات صالح)
/api/v1/mailboxes/{id}/message-tokens POST mailboxes:message-tokens:manage
/api/v1/mailboxes/{id}/message-tokens GET mailboxes:message-tokens:manage
/api/v1/message-tokens/{id} DELETE mailboxes:message-tokens:manage
/api/v1/messages GET messages:read (رمز رسائل)
/api/v1/messages/{uid} GET messages:read (رمز رسائل)
/api/v1/messages/{uid} PATCH messages:write (رمز رسائل)
/api/v1/messages/send POST messages:send (رمز رسائل)
/api/v1/messages/_ping GET messages:read (رمز رسائل، تشخيصي)
/api/v1/messages/{uid}/attachments/{index} GET messages:read (رمز رسائل)
/api/v1/messages/{uid}/attachments GET messages:read (رمز رسائل)
/api/v1/messages/{uid}/raw GET messages:read (رمز رسائل؛ يعيد raw_base64 وencoding وcontent_type وsize_bytes)
/api/v1/messages/folders POST messages:write (رمز رسائل)
/api/v1/messages/folders/{path} PATCH messages:write (رمز رسائل)
/api/v1/messages/folders/{path} DELETE messages:write (رمز رسائل)
/api/v1/messages/{uid}:spam POST messages:write (رمز رسائل)
/api/v1/messages/{uid}:ham POST messages:write (رمز رسائل)
/api/v1/messages/bulk POST messages:write (رمز رسائل)
/api/v1/messages/folders:empty POST messages:write (رمز رسائل)
/api/v1/messages/drafts POST messages:write (رمز رسائل)؛ يعيد uid + uidvalidity
/api/v1/messages/drafts/{uid} PUT messages:write (رمز رسائل)؛ يتطلب uidvalidity للمسودة
/api/v1/messages/scheduled POST messages:send (رمز رسائل)
/api/v1/messages/scheduled GET messages:read (رمز رسائل)
/api/v1/messages/scheduled/{id} PATCH messages:send (رمز رسائل)
/api/v1/messages/scheduled/{id} DELETE messages:send (رمز رسائل)
/api/v1/messages/contacts GET messages:read (رمز رسائل)
/api/v1/messages/contacts POST messages:write (رمز رسائل)
/api/v1/messages/contacts/{id} PATCH messages:write (رمز رسائل)
/api/v1/messages/contacts/{id} DELETE messages:write (رمز رسائل)
/api/v1/messages/contacts/import POST messages:write (رمز رسائل)
/api/v1/messages/contacts/export GET messages:read (رمز رسائل)
/api/v1/messages/contact-groups GET messages:read (رمز رسائل)
/api/v1/messages/contact-groups/{id}/members GET messages:read (رمز رسائل)
/api/v1/messages/external-accounts GET messages:read (رمز رسائل)
/api/v1/messages/external-accounts POST messages:write (رمز رسائل)
/api/v1/messages/external-accounts/{id} PATCH messages:write (رمز رسائل)
/api/v1/messages/external-accounts/{id} DELETE messages:write (رمز رسائل)
/api/v1/messages/external-accounts/detect POST messages:read (رمز رسائل)
/api/v1/messages/external-accounts/test POST messages:write (رمز رسائل)
/api/v1/messages/external-accounts/{id}/test POST messages:write (رمز رسائل)
/api/v1/messages/_me GET أي رمز رسائل (استبطان)
/api/v1/messages/calendar/events GET messages:read (رمز رسائل)
/api/v1/messages/calendar/events POST messages:write (رمز رسائل)
/api/v1/messages/calendar/events/{id} PATCH messages:write (رمز رسائل)
/api/v1/messages/calendar/events/{id} DELETE messages:write (رمز رسائل)
/api/v1/messages/{uid}/reply GET messages:read (رمز رسائل)
/api/v1/messages/{uid}/reply-all GET messages:read (رمز رسائل)
/api/v1/messages/{uid}/forward GET messages:read (رمز رسائل)
/api/v1/messages/contact-groups POST messages:write (رمز رسائل)
/api/v1/messages/contact-groups/{id} PATCH messages:write (رمز رسائل)
/api/v1/messages/contact-groups/{id} DELETE messages:write (رمز رسائل)
/api/v1/messages/contact-groups/{id}/members POST messages:write (رمز رسائل)
/api/v1/messages/contact-groups/{id}/members DELETE messages:write (رمز رسائل)
/api/v1/messages/identities GET messages:read (رمز رسائل)
/api/v1/messages/identities POST messages:write (رمز رسائل)
/api/v1/messages/identities/reply-policy PATCH messages:write (رمز رسائل)
/api/v1/messages/identities/{id} PATCH messages:write (رمز رسائل)
/api/v1/messages/identities/{id} DELETE messages:write (رمز رسائل)
/api/v1/messages/templates GET messages:read (رمز رسائل)
/api/v1/messages/templates POST messages:write (رمز رسائل)
/api/v1/messages/templates/{id} PATCH messages:write (رمز رسائل)
/api/v1/messages/templates/{id} DELETE messages:write (رمز رسائل)
/api/v1/messages/blocked-senders GET messages:read (رمز رسائل)
/api/v1/messages/blocked-senders POST messages:write (رمز رسائل)
/api/v1/messages/blocked-senders/{id} DELETE messages:write (رمز رسائل)
/api/v1/mailboxes/{id}/enable-imap POST mailboxes:write (رمز عمليات)
/api/v1/migrations/test-connection POST migrations:write
/api/v1/migrations GET migrations:read
/api/v1/migrations/{id} GET migrations:read
/api/v1/migrations POST migrations:write
/api/v1/migrations/{id}:cancel POST migrations:write
/api/v1/migrations/{id}:retry POST migrations:write
/api/v1/migrations/{id} DELETE migrations:write
/api/v1/migrations/bulk/preview POST migrations:write
/api/v1/migrations/bulk POST migrations:write
/api/v1/migrations/bulk GET migrations:read
/api/v1/migrations/bulk/{batch} GET migrations:read
/api/v1/migrations/bulk/{batch}:cancel POST migrations:write
/api/v1/migrations/bulk/{batch}:retry POST migrations:write
/api/v1/migrations/bulk/{batch}:resume POST migrations:write
/api/v1/migrations/bulk/{batch} DELETE migrations:write
/api/v1/migrations/bulk/{batch}/jobs/{job}/password PATCH migrations:write
/api/v1/account GET account:read
/api/v1/billing/status GET billing:read
/api/v1/billing/invoices GET billing:read
/api/v1/domains POST domains:create
/api/v1/domains/{id} DELETE domains:delete
/api/v1/domains/{id}/catch-all PATCH domains:write
/api/v1/domains/{id}/mail-hosting PATCH domains:write
/api/v1/domains/{id}/forwarding-addresses POST domains:write
/api/v1/domains/{id}/forwarding-addresses/{addressId} PATCH domains:write
/api/v1/domains/{id}/forwarding-addresses/{addressId} DELETE domains:write
/api/v1/domains/{id}/dkim:retry POST domains:write
/api/v1/domains/{id}/note PATCH domains:write
/api/v1/domains/{id}/signature PATCH domains:write
/api/v1/domains/{id}/branding GET domains:read
/api/v1/domains/{id}/branding PATCH domains:write
/api/v1/domains/{id}/branding/logo/{slot} PUT domains:write
/api/v1/domains/{id}/branding/logo/{slot} DELETE domains:write
/api/v1/domains/{id}/branding/verify-dns POST domains:write
/api/v1/domains/{id}/branding/preview POST domains:write
/api/v1/domains/{id}/branding DELETE domains:write
/api/v1/domains:bulk-add POST domains:create
/api/v1/mailboxes/{id} GET mailboxes:read
/api/v1/mailboxes/{id}/client-setup GET mailboxes:read
/api/v1/mailboxes/{id}/apple-mail-profile GET mailboxes:read
/api/v1/mailboxes/{id}/bounces GET mailboxes:read
/api/v1/mailboxes/{id}/password POST mailboxes:write
/api/v1/mailboxes/{id}/note PATCH mailboxes:write
/api/v1/mailboxes/{id}:pause POST mailboxes:write
/api/v1/mailboxes/{id}:restore POST mailboxes:delete
/api/v1/mailboxes/{id}:resume POST mailboxes:write
/api/v1/mailboxes/{id}:suspend-login POST mailboxes:write
/api/v1/mailboxes/{id}:resume-login POST mailboxes:write
/api/v1/mailboxes:login-access POST mailboxes:write
/api/v1/mailboxes:drive-access POST mailboxes:write
/api/v1/mailboxes/{id}/members GET mailboxes:read
/api/v1/mailboxes/{id}/members POST mailboxes:write
/api/v1/mailboxes/{id}/members/{member} PATCH mailboxes:write
/api/v1/mailboxes/{id}/members/{member} DELETE mailboxes:write
/api/v1/shared-mailboxes POST mailboxes:create
/api/v1/mailboxes/{id}/convert-to-shared POST mailboxes:write
/api/v1/mailboxes/{id}/convert-to-regular POST mailboxes:write
/api/v1/tickets GET tickets:read
/api/v1/tickets/{id} GET tickets:read
/api/v1/tickets/{id}/messages GET tickets:read
/api/v1/tickets POST tickets:write
/api/v1/tickets/{id}:mark-seen POST tickets:write
/api/v1/tickets/{id}/reply POST tickets:write
/api/v1/tickets/{id}:close POST tickets:write
/api/v1/domains/{id}/smtp GET smtp:read
/api/v1/domains/{id}/smtp PUT smtp:write
/api/v1/domains/{id}/smtp/profiles GET smtp:read
/api/v1/domains/{id}/smtp/profiles POST smtp:write
/api/v1/domains/{id}/smtp/profiles/{connectionId} PUT smtp:write
/api/v1/domains/{id}/smtp/profiles/{connectionId} DELETE smtp:write
/api/v1/domains/{id}/smtp:test POST smtp:write
/api/v1/domains/{id}/smtp:test-status/{jobId} GET smtp:read
/api/v1/smtp/default GET smtp:read
/api/v1/smtp/default PUT smtp:write
/api/v1/smtp (قديم، للتوافق) GET smtp:read
/api/v1/smtp (قديم، للتوافق) PUT smtp:write
/api/v1/smtp/{id} (قديم، للتوافق) DELETE smtp:write
/api/v1/smtp:test (قديم، للتوافق) POST smtp:write
/api/v1/smtp:test-status/{jobId} (قديم، للتوافق) GET smtp:read
/api/v1/messages/{uid} DELETE messages:write (رمز رسائل)
/api/v1/messages/{uid}:move POST messages:write (رمز رسائل)
/api/v1/messages/folders GET messages:read (رمز رسائل)
/api/v1/mailboxes/{id}/aliases GET mailboxes:read
/api/v1/mailboxes/{id}/aliases POST mailboxes:write
/api/v1/mailboxes/{id}/aliases/{aliasId} PATCH mailboxes:write
/api/v1/mailboxes/{id}/aliases/{aliasId} DELETE mailboxes:write
/api/v1/verify POST verify:write
/api/v1/verify/bulk POST verify:write
/api/v1/verify/bulk/{jobId} GET verify:read
/api/v1/verify/bulk/{jobId}/download GET verify:read
/api/v1/verify/credits GET verify:read
/api/v1/verify/bulk GET verify:read
/api/v1/verify/bulk/{jobId}/cancel POST verify:write
/api/v1/verify/bulk/{jobId} DELETE verify:write
/api/v1/cloudflare/validate-token POST cloudflare:read
/api/v1/cloudflare/zones POST cloudflare:read
/api/v1/cloudflare/connect POST cloudflare:write
/api/v1/cloudflare/preview POST cloudflare:read
/api/v1/cloudflare/apply POST cloudflare:write
/api/v1/cloudflare/tokens GET cloudflare:read
/api/v1/cloudflare/tokens/{id} DELETE cloudflare:delete

تتبع نقاط نهاية Cloudflare التدفق نفسه في لوحة التحكم: تحقق من الرمز، واسرد المناطق، واربط النطاقات، وعاين تغييرات DNS، ثم طبقها. تقبل كل من /cloudflare/preview و/cloudflare/apply عنصري تحكم اختياريين لكل نطاق:

  • included_records، وهي قائمة سماح بالسجلات التي ستتأثر، مفهرسة بمعرّف النطاق: { "123": ["mx_primary", "spf_record"] }. يتم تجاوز السجلات التي لا تدرجها، لذا يمكنك تطبيق MX وSPF فقط والعودة إلى DKIM لاحقا. احذف الحقل لتطبيق كل سجل.
  • confirmed_conflicts، عندما تشير المعاينة إلى سجل موجود بالفعل بقيمة مختلفة، أدرج معرّف سجله هنا، بالبنية نفسها { domain_id: [record_ids] }، للسماح باستبداله.

تأتي معرّفات السجلات (mx_primary وspf_record وdkim_primary وdmarc_main و…) مباشرة من استجابة المعاينة، ولذلك يستدعي الوكيل المعتاد المعاينة أولا ويمرر المعرّفات التي يريدها إلى التطبيق:

POST /api/v1/cloudflare/apply
{
  "domain_ids": [123],
  "included_records": { "123": ["mx_primary", "spf_record"] },
  "confirmed_conflicts": { "123": ["dmarc_main"] }
}

توجيه SMTP لكل نطاق والإعداد الافتراضي للحساب

يضبط SMTP لكل نطاق. يختار كل نطاق واحدا من ثلاثة مسارات: الإرسال المُدار عبر المنصة، أو ملف تعريف SMTP محفوظ، أي مزودك الخاص القابل لإعادة الاستخدام عبر النطاقات، أو "غير مضبوط"، ويحدد إعداد افتراضي واحد على مستوى الحساب المسار الذي تبدأ عليه النطاقات الجديدة.

نقاط النهاية لكل نطاق (smtp:read / smtp:write):

نقطة النهاية الطريقة ما الذي تفعله
/api/v1/domains/{id}/smtp GET المسار الحالي: smtp_mode وeffective_smtp_mode وprofile وeffective_profile
/api/v1/domains/{id}/smtp PUT تضبط المسار، بالنص {smtp_mode: platform|profile|not_configured|inherit, smtp_connection_id?, set_account_default?, apply_to_all?}
/api/v1/domains/{id}/smtp/profiles GET تسرد ملفات تعريف SMTP المحفوظة للحساب
/api/v1/domains/{id}/smtp/profiles/{connectionId}/usage GET تسرد النطاقات وعناوين Send As الدقيقة التي تستخدم ملف التعريف، دون بيانات اعتماد
/api/v1/domains/{id}/smtp/profiles POST تنشئ ملف تعريف وتستخدمه لهذا النطاق
/api/v1/domains/{id}/smtp/profiles/{connectionId} PUT تحدث ملف تعريف، مما يؤثر في كل نطاق يستخدمه
/api/v1/domains/{id}/smtp/profiles/{connectionId} DELETE تحذف ملف تعريف، ويعاد تعيين النطاقات التي تستخدمه إلى إعداد الحساب الافتراضي
/api/v1/domains/{id}/smtp:test POST تختبر مسارا، وتعيد {job_id, poll_url}
/api/v1/domains/{id}/smtp:test-status/{jobId} GET تستعلم عن مهمة اختبار

بعض الملاحظات حول نص المسار:

  • يحدد smtp_mode=platform الإرسال المُدار؛ ويتطلب smtp_mode=profile القيمة smtp_connection_id؛ أما not_configured فيمسح المسار.
  • تجعل smtp_mode=inherit النطاق يتبع مباشرة إعداد الحساب الافتراضي، فكلما تغير الافتراضي تغير هذا النطاق معه. تكتب واجهة الويب دائما مسارات محددة، لكن الخلفية ما زالت تدعم inherit، ولهذا يعيد GET الحقل effective_smtp_mode ليبين القيمة التي يحل إليها inherit حاليا.
  • تمثل set_account_default: true في API مفتاح اجعل هذا إعداد الحساب الافتراضي في لوحة التحكم، فتبدأ النطاقات الجديدة على هذا المسار. وتمثل apply_to_all: true زر تطبيق على جميع النطاقات، أي تحويل جميع النطاقات إلى هذا المسار مرة واحدة.

نقاط نهاية الإعداد الافتراضي على مستوى الحساب (smtp:read / smtp:write):

نقطة النهاية الطريقة ما الذي تفعله
/api/v1/smtp/default GET تعيد default_smtp_mode، وقيمته null حتى تعيينه، وeffective_default_smtp_mode، وهو أساس الخطة المستخدم عند عدم التعيين، وdefault_smtp_connection_id وprofile
/api/v1/smtp/default PUT تضبط الإعداد الافتراضي، بالنص {smtp_mode: platform|profile|not_configured, smtp_connection_id?, apply_to_all?}

يعيد حذف ملف تعريف كان إعداد الحساب الافتراضي ذلك الإعداد إلى أساس الخطة.

نقاط النهاية القديمة. تظل GET/PUT /api/v1/smtp على مستوى الحساب، ومعها DELETE /api/v1/smtp/{id} وPOST /api/v1/smtp:test وGET /api/v1/smtp:test-status/{jobId}، متاحة للتوافق مع الإصدارات السابقة، لكنها لم تعد تتحكم في التوجيه لكل نطاق: استخدم نقاط النهاية لكل نطاق و/smtp/default أعلاه. كما أصبحت أداتا MCP القديمتان get_smtp_config وupdate_smtp_config مهملتين للسبب نفسه.

علامة White Label التجارية والعملاء ووصول الفريق

تضبط العلامة التجارية لكل نطاق باستخدام branding:read / branding:write. يشغل النطاق علامته الخاصة (mode=custom)، أو يرث إعداد الحساب الافتراضي (mode=inherit)، أو تكون العلامة متوقفة. يلزم توفر فترة تجريبية نشطة لـWhite Label أو إضافة مدفوعة. وبعد الإلغاء، يحتفظ المالك بوصول استرداد للقراءة فقط أثناء مهلة السماح المعروضة. اقرأ dns_records للنطاق وانشر السجلات المعادة كما هي تماما. لا تستنتج أسماء المضيفين أو أهداف CNAME من مثال.

نقطة النهاية الطريقة ما الذي تفعله
/api/v1/domains/{id}/branding GET تقرأ العلامة التجارية: mode وwhite_label_addon_active وbrand وhosts وdns_records المطلوب إنشاؤها وcname_target وmail_zone
/api/v1/domains/{id}/branding PATCH تحديث دمج جزئي: mode وname وprimary_color/accent_color وdashboard_enabled/dashboard_label وwebmail_enabled/webmail_label وmail_zone_enabled وsupport_email وsupport_url وsender_email وscope
/api/v1/domains/{id}/branding/logo/{slot} PUT ترفع شعار base64، حيث slot = light|dark|favicon؛ بصيغة PNG/JPG وICO للأيقونة، وبحجم ≤1 MB، ولا يقبل SVG. يتطلب scope=domain الافتراضي وضع custom؛ أما scope=account_default الصريح في نطاق inherit فيتطلب رمزا غير مقيد.
/api/v1/domains/{id}/branding/logo/{slot} DELETE تزيل موضع شعار. وتستخدم قواعد نطاق المجال أو إعداد الحساب الافتراضي نفسها؛ يأخذ DELETE القيمة scope كمعامل استعلام.
/api/v1/domains/{id}/branding/verify-dns POST تضع التحقق من DNS لمضيفي العلامة ومنطقة بريدها في قائمة الانتظار
/api/v1/domains/{id}/branding/preview POST تنشئ عنوان URL قصير الأجل للمعاينة، مع 422 no_brand إذا لم تضبط العلامة التجارية
/api/v1/domains/{id}/branding?scope=domain|all DELETE تمسح العلامة التجارية لهذا النطاق أو للحساب كله

يمثل PATCH دمجا جزئيا، ولذلك تبقى الحقول المحذوفة محفوظة. وإذا كانت العلامة التجارية متوقفة حاليا، فمرر mode لإعادة تمكينها. يجب أن يكون sender_email المخصص على نطاق له مفتاح DKIM متحقق منه. يوفر mail_zone_enabled تطبيقات البريد ومزامنة DAV ضمن نطاق العلامة نفسه. وهو يتبع العلامة لا نطاقا واحدا، ولذلك يحتاج إلى mode=custom أو scope=account_default؛ ويعيد نطاق inherit الخطأ 422 inherited_brand. اقرأ mail_zone.dns_status وmail_zone.client_hosts_status وmail_zone.records وmail_zone.dav_url وmail_zone.dav_ready لتتبع التجهيز، ولا تستخدم إلا عنوان DAV جاهزا. للاطلاع على سير العمل الكامل للوكيل، راجع دليل White Label Branding عبر API وMCP.

تضيف واجهة White Label على مستوى الحساب 13 مسارا ضمن /api/v1/white-label: الحالة وتقدم الإعداد، وكتالوج وصول مباشر، وقائمة الأعضاء وإجراءات دورة حياتهم، ونشاط الحساب، وسجل الإجراءات وتسجيل الدخول لكل عضو. تستخدم members:read وmembers:write وactivity:read. يكون الوصول دائما تقاطع استحقاق الحساب وعضوية الشخص الحالية ومنحة بيانات الاعتماد وأي قيد على النطاق. راجع إدارة فرق White Label باستخدام API وMCP للاطلاع على جدول المسارات وانتقالات الحالة.

تتوفر مواصفات OpenAPI في /api/openapi.json لاستيرادها إلى Postman أو Insomnia أو مولدات التعليمات البرمجية.

إصلاحات سريعة

  • 401 "unauthenticated": تحقق من وجود الترويسة Authorization: Bearer <token> ومن أن الرمز لم يلغ أو تنته صلاحيته.
  • 403 "plan_api_disabled": النطاق المطلوب غير متاح في خطتك. تغطي Nano أداة التحقق من البريد الإلكتروني، وDrive إذا اشتريت إضافة Drive Storage. قم بالترقية إلى Starter أو أعلى لبقية API.
  • 403 "token_scope_blocked_by_plan": يحتوي رمزك على نطاقات غير متاحة في خطتك الحالية. ألغ الرمز وأنشئ رمزا جديدا بالنطاقات المسموح بها.
  • 403 "scope_blocked_by_entitlement": منحة White Label المحفوظة غير متاحة لأن الإضافة غير نشطة أو لأن العملية كتابة أثناء فترة السماح. أعد تنشيط White Label، ثم أعد إصدار بيانات الاعتماد أو تفويضها.
  • 403 "scope_blocked_by_membership": دور العضو الحالي أضيق من الإجراء المطلوب. اطلب من المالك تغييره؛ لا يمكن لإعادة التفويض وحدها توسيع العضوية.
  • 422 "missing_idempotency_key": أضف ترويسة Idempotency-Key إلى عملية الكتابة المذكورة في مرجع نقطة النهاية.
  • 403 "mailbox_sending_paused": توقف الإرسال من صندوق البريد لأن بريده الصادر لم يعد يبدو صادرا عن مالكه، وعادة يكون السبب وقوع كلمة المرور في أيد غير صحيحة. تظل القراءة والسرد وجميع نقاط النهاية الأخرى عاملة؛ يرفض الإرسال وحده، ولن تؤدي إعادة المحاولة إلى رفع الإيقاف. يجب تغيير كلمة مرور صندوق البريد، وبعد ذلك يعيد الدعم تشغيل الإرسال. راجع لماذا لا يمكنني إرسال البريد الإلكتروني؟.
  • 429 تجاوز حد المعدل: انتظر المدة المحددة في ترويسة Retry-After قبل إعادة المحاولة.

إرسال البريد الإلكتروني: النص والترويسات وقابلية التسليم

تأخذ POST /api/v1/messages/send بنية الطلب {to, subject, body: {text, html}, attachments, reply_to_message_id, headers}.

  • كل من body.text وbody.html اختياري، لكن يلزم واحد منهما على الأقل. إذا قدمت body.text فقط، فإننا ننشئ تلقائيا بديلا بصيغة HTML باستخدام فقرات <p>، حيث تفصل الأسطر الفارغة بين الفقرات وتصبح الأسطر الجديدة المفردة <br>، لكي تظهر الرسالة كبريد عادي في كل عميل حديث. وإذا احتجت إلى خط ثابت العرض، فأرسل <pre>...</pre> حرفيا في body.html.
  • headers كائن اختياري للترويسات الصادرة التي يقدمها المستخدم. قائمة السماح هي List-Unsubscribe وList-Unsubscribe-Post وReply-To وأي ترويسة تتبع مخصصة من X-*. تدير المنصة الأسماء الأخرى مثل From وSubject وMessage-Id وAuthentication-Results، وترفضها مع 422. وترفض أيضا القيم التي تحتوي على CR/LF للحماية من حقن الترويسات. ويبلغ حد القيم 998 محرفا وفقا لـRFC 2822.
  • لحالات الاستخدام الجماعي والأتمتة، راجع قسم ترويسات قابلية التسليم للمرسل الجماعي لإعداد List-Unsubscribe ومفتاح auto_list_unsubscribe على مستوى الحساب.

مقالات ذات صلة

انتقل إلى الأدلة القريبة التي تُكمل سير العمل.

نستخدم التقنيات الضرورية لتشغيل TrekMail وحمايته. عند التأكيد، تسمح أيضًا بتحليلات محدودة وقياس الإعلانات كما هو موضح في سياسة ملفات تعريف الارتباط.

تسجيل الدخول إلى TrekMail

الوصول إلى لوحة التحكم وصناديق البريد وإعدادات DNS الخاصة بك.

أو

12 أحرف كلمتا المرور متطابقتان

أو

تم إرسال بريد إعادة التعيين

إذا كان هناك حساب مرتبط بهذا البريد الإلكتروني، فقد أرسلنا تعليمات إعادة تعيين كلمة المرور.

بالمتابعة، فإنك توافق على شروط TrekMail و سياسة الخصوصية.