كيفية إصلاح INVALID_EMAIL_ADDRESS في عمليات نشر Salesforce

يحتوي سجل قيد الحفظ على قيمة في حقل بريد إلكتروني لا تطابق التحقق من صحة تنسيق البريد الإلكتروني في Salesforce.

يظهر أثناء: DML وقت التشغيل، غالبًا في إعداد اختبارات Apex أو تحميل بيانات

المعنى

يعني INVALID_EMAIL_ADDRESS أن حقلًا محددًا كنوع Email على الكائن تلقى قيمة يرفضها فحص التنسيق المدمج في Salesforce، مثل غياب رمز @ أو شكل نطاق غير صالح أو مسافات بيضاء زائدة. تتحقق Salesforce من حقول البريد الإلكتروني على مستوى المنصة بغض النظر عن أي قواعد تحقق مخصصة، لذا يظهر هذا حتى على الكائنات التي لا تملك أي أتمتة خاصة بالبريد الإلكتروني.

الفحص المدمج في Salesforce متساهل عن قصد بشأن ما يُعد نطاقًا صالحًا، لذا تجتاز معظم العناوين الحقيقية الفحص؛ والقيم التي تفشل هي غالبًا بيانات اختبار اصطناعية أو بيانات مؤقتة وليست أخطاء إملائية حقيقية في بريد عملاء فعليين.

التشخيص

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

بيانات الاختبار أو البذر تستخدم عنوانًا مشوّهًا
تتضمن بيانات fixture قيمة مؤقتة لم تطابق قط شكل بريد إلكتروني صالح، مثل اسم مستخدم مجرد أو نطاق تنقصه نقطة.
الترحيل ربط عمودًا مصدريًا خاطئًا
يوجّه تعيين حقل في سكربت ETL أو تحميل البيانات عمود نص غير ذي صلة إلى حقل Email بدلًا من مصدر البريد الإلكتروني الفعلي.
قيمة مؤقتة داخلية أو خاصة بلغة معينة تسللت
تم تحميل قيمة إشارية داخلية، مثل "n/a" أو قيمة افتراضية للنظام، في حقل Email مطلوب بدلًا من تركه فارغًا.

الحل

  1. أصلح القيمة المخالفة عند المصدر
    صحّح العنوان المشوّه في بيانات الاختبار أو بيانات المصدر بدلًا من الالتفاف حول التحقق من صحة الحقل.
  2. استخدم عناوين صحيحة التنسيق في بيانات الاختبار
    وحّد الاستخدام على نمط مثل [email protected] لبيانات الاختبار المولدة، بحيث تجتاز دائمًا التحقق من صحة البريد الإلكتروني.
    String testEmail = 'test-user+' + String.valueOf(Math.abs(Crypto.getRandomInteger())) + '@example.com';
  3. دقّق في تعيين حقول الترحيل
    تأكد من أن عمود المصدر الذي يغذي حقل Email يحتوي فعلًا على عناوين بريد إلكتروني قبل تشغيل التحميل التالي.
من واقع الاستخدام

إزاي Serpent بتمنع ده

لأن Serpent يشغّل مجموعة الاختبارات الكاملة، بما في ذلك إعداد أي بيانات، على كل مهمة قبل الدمج، يظهر البريد الإلكتروني المشوّه في بيانات الاختبار على الفرع الذي أدخله بدلًا من أن يعطّل إصدار إنتاج لاحقًا. اطّلع على مكتبة أخطاء نشر Salesforce.

الـ metadata والبيانات في مسار نشر واحد داخل Serpent

الوقاية

مركزة توليد بريد الاختبار في طريقة مصنع واحدة مشتركة
وجّه كل فئة اختبار عبر أداة مساعدة واحدة تنتج عناوين بريد إلكتروني فريدة ومضمونة الصحة، بدلًا من ترك كل اختبار يكتب عنوانه الخاص يدويًا.
تحقق من صحة أعمدة البريد الإلكتروني قبل الترحيل، لا بعد فشله
شغّل فحص regex بسيط على عمود المصدر المرتبط بـ Email كجزء من تحليل البيانات قبل الترحيل.
لا تحمّل أبدًا قيمًا إشارية في حقل من نوع Email حقيقي
استخدم قيمة null أو حقل علم مخصص لـ "غير معروف" أو "غير قابل للتطبيق" بدلًا من كتابة نص مؤقت في حقل Email.
أسئلة شائعة

INVALID_EMAIL_ADDRESS: الإجابة

هل يمكنني تجاوز التحقق من صحة البريد الإلكتروني لسجل معين؟
لا. تفرض Salesforce فحص تنسيق البريد الإلكتروني على حقول نوع Email بغض النظر عن قواعد التحقق أو إعدادات المشغلات؛ يجب أن تكون القيمة نفسها ذات شكل صالح.
هل ينطبق هذا على حقل نصي (Text) يخزّن قيمة تشبه بريدًا إلكترونيًا، أم على حقول Email الحقيقية فقط؟
فقط حقول نوع Email الحقيقية تُطلق هذا الفحص على مستوى المنصة. لا يتم التحقق من حقل نصي يحمل نصًا بشكل بريد إلكتروني إلا إذا فرضت ذلك قاعدة تحقق منفصلة.
هل يسبب حقل Email فارغ هذا الخطأ في أي وقت؟
لا، إلا إذا كان الحقل أيضًا مُعلَّمًا كمطلوب، وفي هذه الحالة يكون الفشل REQUIRED_FIELD_MISSING وليس INVALID_EMAIL_ADDRESS. حقل Email اختياري فارغ يُقبل دائمًا.

ابدأ مجانًا. بدون بطاقة ائتمان، وبدون تثبيت، وبدون التزام.

يتم الإعداد في أقل من 15 دقيقة. بدون الحاجة لتوظيف DevOps.

هل تريد معرفة كيف يمكنكم الشحن أسرع قبل البدء؟ لنتحدث

بدون التزام.