Nateq يُكتشفان تلقائياً في Laravel. بدون أي
اعتماديات مطلوبة وقت التشغيل، لذا لن يتعارض مع إصدار Guzzle في تطبيقك.
Packagist
nateq/sdk
GitHub
الكود المصدري والمشكلات
المتطلبات
- PHP الإصدار 8.2 أو أحدث
- الامتدادان
ext-curlوext-json - Laravel 11 أو 12 (اختياري — تعمل الحزمة بدونه)
التثبيت
Nateq تلقائياً. لا شيء تحتاج لتسجيله.
البدء السريع
أنشئ مفتاح API بنطاقemails:send، ثم ضعه في بيئتك:
المصادقة
تقرأ الحزمةNATEQ_API_KEY افتراضياً. مرّره صراحةً لتحميله من مدير أسرار، أو
للتعامل مع أكثر من مؤسسة:
إرسال البريد الإلكتروني
تعودsend() بمجرد قبول الواجهة للرسالة. أما التسليم فيحدث بعد ذلك — العودة
بنجاح تعني أن Nateq تحمّلت مسؤولية الرسالة، لا أنها وصلت.
htmlBody أو plainTextBody أو كليهما. احذف fromEmail و
emailAddressId لاستخدام عنوان مؤسستك الافتراضي المُوثَّق.
قراءة البريد الإلكتروني
EmailStatus هو تعداد (enum) مزوّد بدوال مساعدة، حتى لا تحفظ أي من الحالات
التسع يُعدّ نجاحاً:
limit هي 50 والحد الأقصى 100.
تُرجع الواجهة حقولاً أكثر مما تمثّله الحزمة. أي حقل غير مُتاح كخاصية يبقى
موجوداً في
$email->raw، لذا يعمل الحقل الجديد دون ترقية الحزمة.الأخطاء
كل الأخطاء ترث منNateqException، لذا تكفي كتلة catch واحدة:
راجع الأخطاء لرموز الواجهة الأساسية.
إعادة المحاولة والإرسال المُكرر
تُعاد عمليات القراءة (get و list) تلقائياً عند انتهاء المهلة أو أخطاء 5xx أو
فشل الاتصال، مع تراجع تدريجي يحترم Retry-After.
أما send() فلا. لا تملك الواجهة مفتاح تكرار (idempotency key)، لذا فإن
عملية إرسال تفشل بعد وصولها إلى الخادم قد تكون قد أُرسلت فعلاً. إعادتها قد
تُرسل رسالتين إلى عميلك، والحزمة لن تتخذ هذا القرار نيابةً عنك.
الاستثناء هو 429، الذي تُطلقه الواجهة قبل إرسال أي شيء — لذا تُعاد المحاولة،
لأن التكرار مستحيل.
إذا أطلقت send() خطأ TimeoutException أو ServerException، فالنتيجة غير
معروفة فعلاً. تحقق منها قبل إعادة المحاولة:
Laravel
انشر ملف الإعدادات فقط إذا أردت تعديله:الإرسال من مهمة في الطابور
البريد الإلكتروني هو استدعاء شبكي لطرف ثالث. تنفيذه داخل الطلب يربط زمن استجابتك بزمن استجابتنا.NATEQ_API_KEY ولم يحدث شيء، فلديك إعدادات مُخزّنة مؤقتاً:
الاختبار
لا تستدعِ الواجهة الحقيقية من مجموعة اختباراتك. نفّذHttpClient بنسخة وهمية: