تخطَّ إلى المستندات
Ruby

التثبيت

gem واحد، بلا تبعيات وقت التشغيل، لـ Ruby 3.2 فما فوق.

التثبيت

الإصدار الحالي هو 0.0.1. فيه تابع مقابل كل تابع في TypeScript SDK، بالاسم نفسه بصيغة snake_case، ويُفشل فحص التكافؤ في الـ gem البناء حين يغيب أحدها أو يرسل طلبًا مختلفًا.

bundle add openemail
send_email.rb
require "openemail" OpenEmail.init(api_key: ENV.fetch("OPENEMAIL_API_KEY")) email = OpenEmail.emails.send(  from: "Acme Billing <[email protected]>",  to: "[email protected]",  subject: "Your September invoice",  html: "<p>Invoice attached.</p>") puts email[:id], email[:status]

يضبط OpenEmail.init العميل المشترك مرة واحدة، ومن بعدها تستخدمه OpenEmail.emails وOpenEmail.threads وكل مساحة أسماء أخرى، في كل ملف. وإن تخطّيته، يبني أول استدعاء العميل من OPENEMAIL_API_KEY بدلًا من ذلك.

الاستجابة هي JSON المحلَّل في صورة Hash بمفاتيح من نوع Symbol، فيقرأ email[:id] المعرّف. وتحتفظ المفاتيح بأسماء API، ولهذا يبقى حقل مثل scheduledAt بصيغة camelCase بينما تكون التوابع وخياراتها بصيغة snake_case.

عودة send لا تعني أن الرسالة قد ذهبت. فالإرسال المجدوَل أو القابل للإلغاء يعود بالحالة queued أو scheduled ويستقر لاحقًا. اقرأ status، لا مجرد كون الاستدعاء قد عاد.

أين يعمل

Ruby 3.2 فما فوق، بلا تبعيات وقت التشغيل. عميل HTTP هو Net::HTTP من المكتبة القياسية، مع مجموعة من الاتصالات المُبقاة حيّة، فيعيد الطلب الثاني إلى API استخدام الاتصال الذي فتحه الطلب الأول.

يمكن مشاركة عميل واحد بأمان بين خيوط التنفيذ، فلا تحتاج عملية Puma أو Sidekiq إلا إلى عميل واحد. وبعد عملية fork، كما في وضع cluster في Puma أو في Unicorn أو Resque، تفتح العملية الابنة اتصالاتها الخاصة بدل إعادة استخدام اتصالات العملية الأم.

يحمل العميل مفتاح API لمساحة عمل يمكنه إرسال البريد وقراءة صندوق البريد، ولذلك مكانه على خادم، أو في مهمة، أو في أداة تعمل على جهازك. احفظ المفتاح في Rails.application.credentials أو في متغير بيئة، ولا تضعه في الشيفرة أبدًا.