تخطي إلى المحتوى
Guide

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

| 7 min read

تحقق من بنية البريد الإلكتروني وسجلات MX والمجالات التي يمكن التخلص منها من خلال ثلاث استدعاءات لواجهة برمجة التطبيقات. لا يوجد اتصال SMTP، ولا يوجد بريد إلكتروني للتحقق، ولا يوجد خطر الارتداد. واجهة برمجة تطبيقات مجانية للتحقق من صحة البريد الإلكتروني.

Email inbox with verification badges
Photo by Stephen Phillips on Unsplash

يجمع نموذج الاشتراك الخاص بك عنوان بريد إلكتروني. يمكنك تخزينها وإرسال رسالة ترحيب والبريد الإلكتروني مستبعد. العنوان كان خطأ مطبعي أو المجال غير موجود. أو كان رميا @mailinator.com العنوان الذي سوف يكون ميتا في عشر دقائق. لديك الآن غير المرغوب فيه سجل في قاعدة البيانات الخاصة بك، وسمعة المرسل المزعجة، والمستخدم الذي لن يعود أبدًا.

الحل التقليدي هو إرسال رسالة تحقق عبر البريد الإلكتروني: "انقر فوق هذا الرابط لتأكيد عنوانك." إنه يعمل، لكنه يضيف الاحتكاك. ينخفض ​​​​التحويل. ولا يدرك الخطأ المطبعي إلا بعد ذلك لقد قمت بالفعل بإرسال رسالة إلى عنوان سيء.

يمكنك التحقق من صحة عنوان البريد الإلكتروني قبل إرسال أي شيء. ثلاث مكالمات لواجهة برمجة التطبيقات (API) للتحقق من بناء الجملة، MX السجلات والمجالات التي يمكن التخلص منها. تستغرق العملية برمتها أقل من 200 مللي ثانية وتكتشف المشكلات التي تسبب 90% من فشل تسليم البريد الإلكتروني.

ثلاث طبقات من التحقق من صحة البريد الإلكتروني

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

  • التحقق من صحة بناء الجملة. هل يتبع العنوان تنسيقًا صالحًا؟ هل المجال لديك خطأ مطبعي معروف؟ ال /v1/email/validate تتحقق نقطة النهاية من الامتثال لـ RFC 5322، يكتشف العناوين المستندة إلى الأدوار (admin@, support@)، ويقترح تصحيحات للأخطاء الإملائية الشائعة في المجال مثل gmial.com أو hotmal.com.
  • التحقق من سجل MX. هل يمكن للمجال تلقي البريد الإلكتروني على الإطلاق؟ ال /v1/email-mx/verify تستعلم نقطة النهاية عن DNS لسجلات MX وتعود إلى A السجلات. إذا لم يكن لدى المجال خادم بريد، فسيكون العنوان غير قابل للتسليم؛ لا يوجد قدر من إعادة المحاولة سوف اصلاحها.
  • كشف البريد الإلكتروني المتاح. هل العنوان من خدمة التخلص منها؟ ال /v1/disposable-email/check تتحقق نقطة النهاية من أكثر من 700 نطاق معروف يمكن التخلص منه والاختلافات في تطابق الأنماط. كما أنه يشير أيضًا إلى ما إذا كان النطاق مزودًا مجانيًا (Gmail، Outlook) حتى تتمكن من التمييز بين العناوين الشخصية والعناوين التي يمكن التخلص منها.

تحقق من بنية البريد الإلكتروني واكتشف الأخطاء المطبعية

ال /v1/email/validate تقوم نقطة النهاية بمعظم العمل في مكالمة واحدة. إنه يتحقق من صحة التنسيق، والبحث عن سجلات MX، والتحقق من المجالات التي يمكن التخلص منها، واكتشاف الأخطاء المطبعية الشائعة نطاقات المزود.

إجابة:

البريد الإلكتروني jamie@gmial.com لديه بناء جملة صالح، ولكن المجال خطأ مطبعي. واجهة برمجة التطبيقات يعود is_valid: false لأنه لا توجد سجلات MX لـ gmial.com, ويقترح العنوان الصحيح jamie@gmail.com. أظهر هذا الاقتراح في نموذج الاشتراك الخاص بك ويمكنك حفظ المستخدم من حساب ميت.

تحقق من سجلات MX للتحقق مما إذا كان البريد الإلكتروني حقيقيًا

ال /v1/email-mx/verify تركز نقطة النهاية على DNS. تقوم بإرجاع القائمة الكاملة لـ MX السجلات مع الأولويات و deliverable الحقل الذي يخبرك ما إذا كان المجال يمكن أن تتلقى البريد.

إجابة:

ال deliverable يُرجع الحقل إحدى القيم الثلاث: "likely" (مكس تم العثور على السجلات)، "unknown" (لا يوجد MX ولكن يوجد سجل A، لذلك قد يكون المجال قبول البريد)، أو "unlikely" (لا يوجد سجلات MX ولا A). استخدم هذا لتسجيل MX التحقق من الصحة عندما تحتاج إلى بيانات DNS الأولية.

كشف العناوين التي يمكن التخلص منها والتخلص منها

ال /v1/disposable-email/check تحدد نقطة النهاية خدمات البريد الإلكتروني المؤقتة. تعمل هذه العناوين لمدة دقائق أو ساعات، ثم تتوقف عن قبول البريد.

إجابة:

ال is_free يفصل الحقل المجالات التي يمكن التخلص منها عن موفري الخدمات المجانية. جيميل إرجاع العنوان is_free: true و is_disposable: false. بريد إرجاع العنوان is_disposable: true و is_free: false. هذا مسائل التمييز؛ سيؤدي حظر جميع مقدمي الخدمات المجانية إلى إغلاق معظم الإنترنت.

قم ببناء مسار التحقق من الصحة في Node.js

الجمع بين جميع الشيكات الثلاثة في وظيفة واحدة. يقوم خط الأنابيب هذا بتشغيل كل فحص بشكل تسلسلي ودوائر قصيرة عند الفشل الأول.

async function validateEmail(email) {
  const headers = { "Content-Type": "application/json" };
  const body = JSON.stringify({ email });

  // Step 1: Syntax validation + typo detection
  const syntaxRes = await fetch("https://api.botoi.com/v1/email/validate", {
    method: "POST", headers, body,
  });
  const syntax = await syntaxRes.json();

  if (!syntax.data.format_valid) {
    return { valid: false, reason: "Invalid email format" };
  }

  if (syntax.data.suggestion) {
    return {
      valid: false,
      reason: \`Did you mean \${syntax.data.suggestion}?\`,
    };
  }

  // Step 2: MX record verification
  const mxRes = await fetch("https://api.botoi.com/v1/email-mx/verify", {
    method: "POST", headers, body,
  });
  const mx = await mxRes.json();

  if (!mx.data.has_mx) {
    return { valid: false, reason: "Domain cannot receive email" };
  }

  // Step 3: Disposable email detection
  const dispRes = await fetch("https://api.botoi.com/v1/disposable-email/check", {
    method: "POST", headers, body,
  });
  const disp = await dispRes.json();

  if (disp.data.is_disposable) {
    return {
      valid: false,
      reason: \`Disposable email detected (\${disp.data.provider})\`,
    };
  }

  return { valid: true, reason: null };
}

// Usage
const result = await validateEmail("test@mailinator.com");
console.log(result);
// { valid: false, reason: "Disposable email detected (Mailinator)" }

النهج المتسلسل قابل للقراءة ويخرج مبكرًا. إذا فشل بناء الجملة، يمكنك تخطي الشبكة يدعو إلى MX والشيكات التي يمكن التخلص منها. إذا كنت تفضل السرعة على الإنهاء المبكر، قم بتشغيل الكل ثلاثة بالتوازي:

async function validateEmail(email) {
  const headers = { "Content-Type": "application/json" };
  const body = JSON.stringify({ email });

  // Run all three checks in parallel
  const [syntaxRes, mxRes, dispRes] = await Promise.all([
    fetch("https://api.botoi.com/v1/email/validate", {
      method: "POST", headers, body,
    }),
    fetch("https://api.botoi.com/v1/email-mx/verify", {
      method: "POST", headers, body,
    }),
    fetch("https://api.botoi.com/v1/disposable-email/check", {
      method: "POST", headers, body,
    }),
  ]);

  const [syntax, mx, disp] = await Promise.all([
    syntaxRes.json(), mxRes.json(), dispRes.json(),
  ]);

  const errors = [];

  if (!syntax.data.format_valid) errors.push("Invalid format");
  if (syntax.data.suggestion) errors.push(\`Typo: try \${syntax.data.suggestion}\`);
  if (!mx.data.has_mx) errors.push("No MX records");
  if (disp.data.is_disposable) errors.push("Disposable domain");

  return {
    valid: errors.length === 0,
    errors,
    details: { syntax: syntax.data, mx: mx.data, disposable: disp.data },
  };
}

يقوم الإصدار الموازي بتشغيل جميع الطلبات الثلاثة في وقت واحد باستخدام Promise.all. إجمالي زمن الوصول يساوي أبطأ طلب بدلاً من المجموع. في معظم الحالات، الثلاثة كاملة في أقل من 100 مللي ثانية.

خط أنابيب التحقق من صحة بايثون

نفس التحقق من ثلاث خطوات في بايثون. يستخدم هذا المثال requests مكتبة من أجل الوضوح.

import requests

API_BASE = "https://api.botoi.com/v1"

def validate_email(email: str) -> dict:
    headers = {"Content-Type": "application/json"}
    payload = {"email": email}

    # Step 1: Syntax + typo check
    syntax = requests.post(
        f"{API_BASE}/email/validate", json=payload, headers=headers
    ).json()

    if not syntax["data"]["format_valid"]:
        return {"valid": False, "reason": "Invalid email format"}

    suggestion = syntax["data"].get("suggestion")
    if suggestion:
        return {"valid": False, "reason": f"Did you mean {suggestion}?"}

    # Step 2: MX record check
    mx = requests.post(
        f"{API_BASE}/email-mx/verify", json=payload, headers=headers
    ).json()

    if not mx["data"]["has_mx"]:
        return {"valid": False, "reason": "Domain cannot receive email"}

    # Step 3: Disposable check
    disp = requests.post(
        f"{API_BASE}/disposable-email/check", json=payload, headers=headers
    ).json()

    if disp["data"]["is_disposable"]:
        provider = disp["data"]["provider"]
        return {"valid": False, "reason": f"Disposable email ({provider})"}

    return {"valid": True, "reason": None}

# Usage
result = validate_email("jamie@gmial.com")
print(result)
# {'valid': False, 'reason': 'Did you mean jamie@gmail.com?'}

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

تتطلب نقاط الاتصال المختلفة أعماقًا مختلفة للتحقق. هنا حيث يناسب كل الاختيار.

نقطة اللمس بناء الجملة فحص MX يمكن التخلص منه لماذا
نموذج الاشتراك نعم نعم نعم اكتشف الأخطاء المطبعية والمجالات الميتة والحسابات المهملة قبل إنشاء سجل
الخروج / الدفع نعم نعم خياري تحتاج الإيصالات إلى عنوان قابل للتسليم؛ يعتمد الشيك القابل للتصرف على سياسة استرداد الأموال الخاصة بك
نموذج الاتصال نعم خياري لا يمنع فحص التنسيق الأساسي الرسائل غير المرغوب فيها الواضحة؛ يعد فحص MX بمثابة مكافأة
الاشتراك في النشرة الإخبارية نعم نعم نعم يحمي سمعة المرسل. معدلات الارتداد العالية تجعلك مميزًا بواسطة ESPs
استيراد الرصاص / إدارة علاقات العملاء نعم نعم نعم يؤدي تنظيف البيانات قبل دخولها إلى خط الأنابيب الخاص بك إلى توفير التكاليف النهائية
الأدوات الداخلية نعم لا لا يقوم التحقق من بناء الجملة باكتشاف أخطاء إدخال البيانات؛ المستخدمون الداخليون موثوق بهم

النقاط الرئيسية

  • التحقق من صحة قبل تخزينها. كل بريد إلكتروني سيء في قاعدة بياناتك يكلفك: التخزين، فشل الإرسال، ومعالجة الارتداد، وإلحاق الضرر بسمعة المرسل. قبض على المشاكل عند هذه النقطة من الدخول.
  • اكتشاف الأخطاء المطبعية يحفظ المستخدمين. ال /v1/email/validate نقطة النهاية يكتشف الأخطاء الإملائية الشائعة في المجال ويعيد اقتراحًا. الظهور "هل تقصد jamie@gmail.com؟" يمنع المستخدم المفقود.
  • فحوصات MX سريعة ومجانية. يتم حل عمليات بحث DNS بالمللي ثانية. هناك لا يوجد سبب لتخطيهم. العنوان الذي لا يحتوي على سجلات MX لن يتلقى بريدك الإلكتروني أبدًا.
  • الكشف القابل للتصرف يحمي من إساءة استخدام المحاكمة. إذا كنت تقدم نسخة تجريبية مجانية أو خطة freemium، يمنع اكتشاف البريد الإلكتروني القابل للتصرف نفس الشخص من إنشاء عدد غير محدود حسابات مع عناوين المهملة.
  • لا حاجة لمفتاح API للبدء. جميع نقاط النهاية الثلاث تعمل بشكل مجهول عند 5 الطلبات في الدقيقة. اختبار خط الأنابيب الكامل دون الاشتراك. أضف Authorization: Bearer YOUR_KEY head عندما تحتاج إلى إنتاجية أعلى.
  • تشغيل الشيكات بالتوازي للسرعة. نقاط النهاية الثلاث مستقلة. استخدام Promise.all يقطع زمن الوصول الإجمالي إلى أبطأ طلب فردي بدلاً من مجموع الثلاثة.

الوثائق الكاملة لجميع نقاط النهاية الثلاثة موجودة في مستندات API التفاعلية. تقبل كل نقطة نهاية نص JSON ذو email الحقل وإرجاع النتائج في أقل من 100 مللي ثانية من شبكة Cloudflare الطرفية.

FAQ

هل يمكنك التحقق من صحة عنوان البريد الإلكتروني دون إرسال بريد إلكتروني؟
نعم. يمكنك التحقق من ثلاثة أشياء دون إرسال أي شيء: ما إذا كان العنوان يتبع بناء جملة صالحًا (RFC 5322)، وما إذا كان المجال يحتوي على سجلات MX تم تكوينها لتلقي البريد، وما إذا كان المجال ينتمي إلى موفر بريد إلكتروني معروف يمكن التخلص منه. تكتشف عمليات التحقق الثلاثة هذه غالبية العناوين السيئة في وقت الاشتراك.
هل واجهة برمجة تطبيقات التحقق من صحة البريد الإلكتروني في botoi مجانية؟
نعم. يتوفر الوصول المجهول بمعدل 5 طلبات في الدقيقة مع تحديد معدل يعتمد على IP. لا يوجد مفتاح API، ولا اشتراك، ولا حاجة لبطاقة ائتمان. للحصول على إنتاجية أعلى، تبدأ الخطط المدفوعة بسعر 9 دولارات شهريًا وتتضمن الوصول إلى جميع نقاط نهاية واجهة برمجة التطبيقات التي يزيد عددها عن 150 نقطة.
ما الفرق بين التحقق من صحة سجل MX والتحقق من SMTP؟
يتحقق التحقق من صحة سجل MX مما إذا كان النطاق يحتوي على خوادم بريد مهيأة لقبول البريد الإلكتروني. ويؤكد أن المجال يمكنه تلقي البريد بشكل عام. يذهب التحقق عبر SMTP إلى أبعد من ذلك من خلال الاتصال بخادم البريد والسؤال عما إذا كان هناك صندوق بريد محدد. تكون اختبارات MX سريعة (أقل من 100 مللي ثانية) ومجانية. تكون عمليات فحص SMTP أبطأ، ويمكن أن يتم حظرها بواسطة خوادم البريد، وقد تؤدي إلى فرض حدود للمعدلات أو علامات البريد العشوائي.
ما مدى دقة اكتشاف البريد الإلكتروني القابل للتصرف؟
تتحقق نقطة نهاية البريد الإلكتروني القابل للتصرف من botoi من أكثر من 700 نطاقًا معروفًا يمكن التخلص منه وتستخدم مطابقة الأنماط لالتقاط الاختلافات (المجالات التي تحتوي على "temp"، و"trash"، و"throwaway"، وما إلى ذلك). كما أنه يميز بين النطاقات التي يمكن التخلص منها والموفرين المجانيين مثل Gmail أو Outlook. لا توجد قائمة كشف كاملة بنسبة 100%، ولكنها تلتقط جميع الخدمات غير الضرورية المستخدمة على نطاق واسع.
هل يجب علي التحقق من صحة رسائل البريد الإلكتروني على العميل أو الخادم؟
كلاهما. قم بإجراء فحص التنسيق الأساسي على العميل للحصول على تعليقات فورية. قم بتشغيل MX والفحوصات التي يمكن التخلص منها على الخادم قبل الكتابة إلى قاعدة البيانات الخاصة بك. يعمل التحقق من جانب العميل على تحسين تجربة المستخدم؛ التحقق من جانب الخادم يحمي بياناتك. لا تثق أبدًا في عمليات التحقق من جانب العميل وحدها لأنه يمكن تجاوزها.

ابدأ البناء مع botoi

أكثر من 150 نقطة نهاية API للبحث ومعالجة النصوص وتوليد الصور وأدوات المطورين. باقة مجانية، بدون بطاقة ائتمان.