Watch-IP

رصد عناوين التسجيل المؤقتة والمكتوبة بخطأ وتلك التي لا خادم بريد لها

امنح نموذج التسجيل لديك فحصًا مبكرًا لكل عنوان: الصياغة، والنطاقات المؤقتة المعروفة، وما إذا كان للنطاق خادم بريد أصلًا، وأخطاء الكتابة المحتملة، والعناوين الوظيفية — على شكل حكم accept أو review أو reject مع أسبابه. استدعِ POST /v1/email/validate من JavaScript الخاص بنموذجك، أو افحص القوائم بشكل مجمّع من الخلفية لديك أو من لوحة التحكم.

الطلب والمصادقة

أرسل جسم JSON بالشكل { "email": "user@example.com" } إلى POST /v1/email/validate مع مفتاح قابل للنشر مقيَّد بالمصدر في الترويسة X-Api-Key — نوع المفتاح ونموذج المصادر المسموح بها نفسيهما في GET /v1/geo، لذا يمكن استدعاؤه مباشرةً من نموذج التسجيل أثناء الكتابة أو عند الإرسال. ومن جانب الخادم، يتيح مفتاحك السري POST /v1/email/batch (حتى 100 عنوان في الطلب)، ومهام القوائم غير المتزامنة حتى 100,000 عنوان (عبر واجهة البرمجة أو صفحة Email lists في لوحة التحكم، بملف CSV للإدخال والإخراج)، وPOST /v1/signup/check الذي يجمع فحص البريد الإلكتروني مع مؤشرات الشبكة لعنوان IP المُسجِّل في درجة واحدة.

اقرأ الحكم، ثم الأسباب

verdict هو النتيجة الأشد: reject للصياغة غير الصالحة، أو النطاق غير الموجود، أو النطاق الذي لا خادم بريد له، أو النطاق المؤقت؛ وreview لخطأ كتابة مشتبه به، أو عنوان وظيفي مثل info@، أو نطاق بخادم بريد ضمني فقط، أو استعلام DNS لم يكتمل؛ وإلا accept. تسرد reasons كل شرط تحقق، ليعرض نموذجك رسالة محددة — وعندما تكون didYouMean مضبوطة، اعرض التصحيح بدلًا من رسالة خطأ.

متى تستدعيه

استدعِ الفحص عند مغادرة الحقل أو عند الإرسال بدلًا من كل ضغطة مفتاح — ففحص عنوان غير مكتمل مع كل حرف يضيف طلبات دون إشارة مفيدة، وقد يجعل رسالة الخطأ تومض بينما لا يزال الزائر يكتب. كل استدعاء يُحتسب طلبًا واحدًا.

إذا فشل الطلب

اعتمد الفشل المفتوح: دع التسجيل يستمر إذا أخفق طلب الشبكة أو انتهت مهلته، بدلًا من حجب كل زائر بسبب عطل من جانب العميل. ومن جانب الخادم، يُبلَّغ عن فشل استعلام DNS بالسبب dns_unavailable (حكم review)، وليس أبدًا كخطأ أو reject. احتفظ بما كتبه الزائر حتى لا يكلّفه فحص فاشل ما أدخله.

كيف تُكتشف النطاقات المؤقتة

النطاقات المؤقتة المعروفة مدمجة من ثلاث قوائم مفتوحة المصدر يديرها المجتمع (انظر مصادر البيانات)، وتُحدَّث كل بضع ساعات، مع قائمة سماح حتى لا يتمكن إدخال خاطئ من المصدر من الإبلاغ عن مزوّد رئيسي. وتُطابَق أيضًا النطاقات الفرعية لأي نطاق مدرج. أما النطاقات المؤقتة الجديدة التي لم تُدرجها أي قائمة بعد، فغالبًا ما تُرصد عبر خادم بريدها: إذ توجّه خدمات البريد المؤقت نطاقات كثيرة إلى عدد قليل من مضيفي البريد نفسهم، ويُعلَّم النطاق الذي يُعرف أن خادم بريده يخدم نطاقات مدرجة بـ disposableSource: mx_host. وقد لا يُرصد بعدُ مزوّد حديث جدًا على خادم بريد جديد.

الاستخدام والحصة

كل عنوان مفحوص يُحتسب طلبًا واحدًا ضمن الحد الشهري المشترك لخطتك — الفحص الفردي، وكل عنوان في دفعة، وكل عنوان مميّز في مهمة قائمة — إلى جانب حركة المرور الأخرى لديك، مع حد المعدل نفسه في الدقيقة. لا توجد خطة أو سعر منفصل للبريد الإلكتروني. يحتسب حد المعدل في الدقيقة استدعاءات HTTP لا العناصر: الدفعة التي تضم حتى 100 عنوان IP أو بريد إلكتروني تُحتسب طلبًا واحدًا، بينما يظل كل عنصر يُحتسب على حدة ضمن الحد الشهري للطلبات.

ما لا تتحقق منه هذه الميزة

كل فحص على مستوى النطاق أو العنوان. لا يتصل Watch-IP أبدًا بخادم بريد المستلم، لذا لا تُثبت النتيجة وجود صندوق البريد، ولا وصول الرسائل إليه، ولا أنه يخص الشخص الذي يسجّل. يعني حكم accept «لم تُكتشف أي مشكلة»، لا عنوانًا مؤكَّد العمل — استخدم رسالة تأكيد لذلك.

حقول الاستجابة

syntaxValid
ما إذا كان العنوان صحيح الصياغة.
isDisposable
ما إذا كان النطاق يطابق مزوّد بريد مؤقت معروفًا، مباشرةً أو عبر نطاق أب أو عبر خادم بريده. تكون دائمًا false عندما تكون syntaxValid هي false.
disposableSource
list أو parent_domain أو mx_host — سبب كون isDisposable هي true؛ وإلا null.
mx
حالة خادم بريد النطاق (found أو implicit أو none أو null_mx أو no_domain أو unknown) ومضيف MX الأساسي.
didYouMean
تصحيح محتمل لخطأ كتابة مثل gmial.com → gmail.com، أو null.
isRoleAccount / isFreeProvider
مؤشرا العنوان الوظيفي (admin@ وinfo@ وnoreply@…) ومزوّد البريد الاستهلاكي. مؤشر المزوّد المجاني للعلم فقط.
normalizedEmail / canonicalEmail
العنوان بأحرف صغيرة، والعنوان نفسه دون +tags (ودون نقاط Gmail) لرصد الحسابات المكررة.
verdict / reasons
accept أو review أو reject، مع كل رمز سبب تحقق — انظر المرجع للقائمة الكاملة.

التصرّف وفق الحكم

جافاسكريبت نموذج التسجيل

async function checkEmail(email) {
  const response = await fetch('https://api.watch-ip.com/v1/email/validate', {
    method: 'POST',
    headers: { 'X-Api-Key': 'YOUR_PUBLISHABLE_KEY', 'Content-Type': 'application/json' },
    body: JSON.stringify({ email }),
  });
  if (!response.ok) return { state: 'unknown' }; // فشل مفتوح — لا تحجب التسجيل بسبب خطأ في الشبكة

  const result = await response.json();
  if (result.didYouMean) return { state: 'suggest', suggestion: result.didYouMean };
  if (result.verdict === 'reject') return { state: 'reject', reasons: result.reasons };
  return { state: 'ok' }; // accept أو review: اسمح بالتسجيل وعلّمه في الخلفية لديك
}

اعرض رسالة مختلفة لكل سبب — فكلٌّ من invalid_syntax وdisposable_domain وno_mail_server يتطلب إجراءً تصحيحيًا مختلفًا من الزائر — واعرض didYouMean كتصحيح بنقرة واحدة.

الأسئلة الشائعة

هل تتحقق من وجود صندوق البريد فعليًا؟

لا. يفحص الصياغة، وقوائم النطاق وسجلات DNS لخادم البريد، وشكل العنوان. لا يتصل أبدًا بخادم البريد ولا يؤكد وجود صندوق البريد الفردي — فحكم reject بسبب no_mail_server يخص النطاق بأكمله.

هل حكم accept دليل على أن البريد يعمل؟

لا. يعني accept أن أيًّا من الفحوصات لم يجد مشكلة، لا أن العنوان مضمون استقبال البريد أو أنه يخص الشخص الذي يسجّل. استخدم رسالة تأكيد عند الحاجة إلى ذلك.

هل يمكن للمستخدمين تجاوز التحقق من المتصفح؟

نعم. أي فحص من جانب المتصفح، بما فيه هذا الفحص، يمكن تجاوزه بتعطيل JavaScript أو باستدعاء نقطة نهاية التسجيل لديك مباشرةً. طبّق أي قرار مهم في الخلفية لديك — وقد صُمّمت POST /v1/signup/check لهذا الغرض.

هل يمكنني تنظيف قائمة موجودة؟

نعم. ارفع ملف CSV في صفحة Email lists في لوحة التحكم، أو أرسل حتى 100,000 عنوان إلى POST /v1/email/jobs بمفتاحك السري، ثم نزّل ملف CSV بالنتائج يتضمن حكمًا وأسبابًا لكل صف. تُحتسب العناوين المكررة مرة واحدة، وتُحذف الملفات المرفوعة والنتائج بعد 7 أيام.

كيف تُحتسَب الطلبات؟

طلب واحد لكل عنوان مفحوص، ضمن الحد الشهري المشترك لخطتك. تُحتسب العناوين المكررة في مهمة القائمة مرة واحدة؛ ويُحتسب فحص التسجيل طلبًا واحدًا.

صفحات ذات صلة