وثائق المطورين
إرسال البريد عبر SMTP
وجّه أي تطبيق يستخدم SMTP إلى Banger، من Supabase Auth إلى WordPress إلى مرسل إطار عملك. كلمة المرور مفتاح Banger API، وتُسلّم كل رسالة من نطاقك وتظهر في السجلات.
الإعدادات
| المضيف | submit.bangermail.com |
|---|---|
| المنفذ | 465 مع TLS من البداية، أو 587 مع STARTTLS. إذا كانت شبكتك تحظرهما، استخدم 2465 (TLS) أو 2587 (STARTTLS)؛ يقبل المنفذ 25 أيضًا STARTTLS. |
| اسم المستخدم | banger. تعمل أي قيمة: يحدد مفتاح API وحده مساحة عملك. |
| كلمة المرور | مفتاح Banger API بنطاق mail:send. |
| التشفير | TLS 1.2 أو أحدث. لا يُتاح تسجيل الدخول إلا بعد بدء TLS، لذا لا يعبر المفتاح الشبكة بنص مكشوف أبدًا. |
| المصادقة | PLAIN أو LOGIN. |
قبل البدء
- أنشئ مفتاح API. في تطبيق Banger، افتح الإعدادات → المطورون → إدارة مفاتيح API، واختر إنشاء مفتاح API، وحدد
mail:sendوانسخ المفتاح: يظهر مرة واحدة. تعرض الصفحة إعدادات SMTP هذه بجوار مفاتيحك. - أرسل من مسار منتج. يجب أن يكون عنوان From على اسم مضيف ذي مسار منتج نشط، وهو مسار الإيصالات والتنبيهات والبريد الآخر من تطبيقك. في النطاقات، اختر إضافة مسار ثم المنتج وأضف سجلات DNS المدرجة. لا يحمل مسار Mail (صناديق فريقك) أو مسار حملة بريد التطبيقات، لذا لا يستطيع بريد تطبيقك التأثير في سمعة صندوق وارد فريقك.
مثال: Supabase Auth
في مشروع Supabase، افتح Authentication → Emails → SMTP Settings وفعّل SMTP المخصص:
| بريد المرسِل | عنوان على مسار المنتج لديك، مثل noreply@app.example.com |
|---|---|
| اسم المرسِل | اسم منتجك. يسلّمه Banger كما كُتب. |
| المضيف | submit.bangermail.com |
| المنفذ | 465 |
| اسم المستخدم | banger |
| كلمة المرور | مفتاح API الخاص بك |
احفظ، ثم أرسل رابط دخول من Authentication → Users للتحقق من وصوله.
مثال: Node.js
import nodemailer from "nodemailer";
const transport = nodemailer.createTransport({
host: "submit.bangermail.com",
port: 465,
secure: true,
auth: { user: "banger", pass: process.env.BANGER_API_KEY },
});
await transport.sendMail({
from: "Acme <noreply@app.example.com>",
to: "person@example.com",
subject: "Your receipt",
html: "<p>Thanks for your order.</p>",
}); للاختبار من طرفية باستخدام swaks:
swaks --server submit.bangermail.com:465 --tls-on-connect \
--auth PLAIN --auth-user banger --auth-password "$BANGER_API_KEY" \
--from noreply@app.example.com --to you@example.com ما يحدث لكل رسالة
- يسلّم Banger الرسالة كما كتبها تطبيقك، باسم From الخاص بك، موقّعة بمفتاح DKIM لنطاقك ومرسلة من نطاق الارتداد لمسار المنتج لديك.
- يزيل
BccوReturn-Pathوترويسات Banger الخاصة، ويضيفReply-Toيحدد عنوان From عند غيابه. - يُفحص كل مستلم عند
RCPT TO: يُرفض العنوان المستبعد وحده ويُرسل إلى الآخرين. - يمكن أن تصل الرسالة إلى 10 MiB مع حتى 50 مستلمًا.
- تجعل ترويسة
Idempotency-Keyإعادة المحاولة الإرسال نفسه. وبدونها تُعرَف أيضًا إعادة محاولة الرسالة والمستلمين أنفسهم. - تظهر كل رسالة في السجلات مع SMTP كمصدر، وتُحتسب ضمن خطتك كأي إرسال آخر.
الردود والأخطاء
يذكر الرفض سببه ويحمل مرجعًا، (ref …)، يطابق الإدخال في السجلات. الرموز التي تبدأ بـ4 مؤقتة: يمكن لتطبيقك إعادة المحاولة لاحقًا.
| الرد | المعنى |
|---|---|
535 5.7.8 | كلمة المرور ليست مفتاح Banger API صالحًا، أو المفتاح مسحوب، أو يفتقر إلى mail:send. |
421 4.7.0 | ثلاث محاولات دخول فاشلة على اتصال واحد: يُغلق. افحص المفتاح قبل إعادة المحاولة. |
454 4.7.0 | محاولات دخول فاشلة كثيرة من شبكتك خلال الساعة الماضية. حاول لاحقًا. |
550 5.7.1 | لا يملك اسم مضيف From مسار منتج جاهزًا للإرسال (يوضح الرد ما ينقصه)، أو مستلم مستبعد، أو الإرسال متوقف مؤقتًا بسبب السمعة. |
553 5.1.3 | عنوان مستلم غير صالح. |
552 5.3.4 | الرسالة أكبر من 10 MiB. |
554 5.6.0 | الرسالة غير سليمة البنية، مثل ترويسة From أو Subject مكررة، أو From بأكثر من عنوان. |
451 4.7.0 | نَفِدت حصة الإرسال أو الحد اليومي للمساحة. تتجدد في فترة الفوترة أو اليوم التالي، أو الآن بترقية الخطة. |
451 4.3.0 | لم يستطع Banger قبول الرسالة الآن. أعد المحاولة. |
الأمان
- يخزن Banger بصمة كل مفتاح فقط. اسحب مفتاحًا أو دوّره في إدارة مفاتيح API؛ تُرفض عملاء SMTP التي تستخدمه عند دخولها التالي.
- خصص لـSMTP مفتاحًا مستقلًا مع
mail:sendفقط، كي لا تستطيع كلمة مرور مسرّبة قراءة مساحتك. - تُحدّ محاولات الدخول الفاشلة لكل شبكة عميل ولكل مفتاح، ويُسجّل الدخول المرفوض بأحد مفاتيحك في السجلات.
تفضّل HTTP؟ يتوفر الإرسال نفسه عبر Banger API.