هل منح الشارات بالجملة لا يعمل؟

مرحباً بالجميع!

لدي قائمة رسائل بريد إلكتروني في ملف CSV سأمنحهم شارة. توقعت ألا تتم مطابقة مجموعة في منتدانا (أستخدم قائمة بجميع الحاضرين في حدث ما، وليس لديهم جميعًا حساب في المنتدى). بدا أن الأمر يعمل، وتمت مطابقة الكثيرين بشكل جيد - ولكني لاحظت أن شخصًا ما كان يجب أن يحصل عليها لم يحصل عليها.

اختبرته مرة أخرى مع عنوان بريده الإلكتروني فقط في ملف CSV، ولا يزال يظهر على أنه لا يطابق مستخدمًا موجودًا.

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

هل لديكم أي أفكار حول ما يحدث هنا؟ :thinking:

إنها قائمة تضم عدة آلاف من الأشخاص، لذلك لا يمكنني التحقق من كل شيء يدويًا، للأسف.

إعجاب واحد (1)

جرب اسم المستخدم بدلاً من البريد الإلكتروني.

كان بإمكاني القيام بذلك لهذا المثال، ولكن نظرًا لأن لدي قائمة بآلاف رسائل البريد الإلكتروني وليس أسماء المستخدمين، فلن يكون ذلك قابلاً للتطوير للجميع.

هل يحتوي ملف CSV الخاص بك على أي أحرف غير مرئية أو عيوب؟

لا أعتقد ذلك – لقد حاولت تنظيف البيانات والآن أحصل على خطأ 502 :sweat_smile:

يمكنك محاولة التحقق من السجلات؟ لست متأكدًا مما إذا كنت مناسبًا لمساعدتك في هذا الأمر، لكنني سأحاول.:person_shrugging:

هذه هي الأخطاء التي حدثت في ذلك الوقت… مشكلة جديدة بالنسبة لي لحلها :lolsob:

سأقوم بتسجيل الخروج لهذا اليوم، لكنني وجدت هذا الموضوع حول MaxMindDB لبدء محاولة تصحيح هذا الخطأ غدًا :person_shrugging:

إعجاب واحد (1)

شكراً جزيلاً على مساعدتك أيضاً! لم أكن أعرف أين توجد السجلات، لذا من الجيد أن أتعلم ذلك!

هذه التحذيرات لا علاقة لها بمشكلتك. يراها كل من لم يقم بتكوين مفتاح ترخيص MaxMind. نظرًا لأن الناس يضيعون الوقت في التحقيق في هذه التحذيرات، عندما يواجهون مشاكل أخرى، أردت كتمها. ومع ذلك، تم التراجع عن التزامي، لأنه كسر بعض اختبارات CI الأخرى وبيئات التطوير. يجب إعادة القيام به بطريقة أخرى.

فيما يتعلق بمشكلتك، إليك مقتطفات الكود ذات الصلة:

لا أرى أي خطأ واضح، ولكني لست مبرمج Ruby أيضًا. لقد اختبرته على نسختنا باستخدام عنوان بريد إلكتروني واحد وعنوانين في ملف CSV بسيط مفصول بفواصل، وقد نجح الأمر. لقد نجح أيضًا، بغض النظر عما إذا كنت أستخدم نهايات ملفات LF أو CRLF، فقط لاستبعاد بعض مشاكل محلل الملفات الشائعة. كيف تقوم بإنشاء ملف CSV، وهل يبدو جيدًا عند فتحه في محرر نصوص بسيط، مثل المفكرة، nano، vi، أيًا كان؟

رائع، شكراً لمساعدتك. هذا ما كنت أفكر فيه بشأن تحذير MaxMind، لكن لم يكن لدي وقت لقراءة سوى لمحة سريعة قبل أن أسجل الخروج أمس.

يتم إنشاء ملف CSV من Salesforce ويحتوي على عنوان بريد إلكتروني واحد في كل سطر، بدون فواصل أو مسافات. عندما أقوم بلصقه في محرر نصوص أساسي، يبدو جيدًا تمامًا؛ لا توجد أحرف إضافية أو أي شيء آخر. لقد جربت أيضًا باستخدام ملف CSV جديد بعنوان بريد إلكتروني واحد وكان لدي نفس الخطأ.

بالمعنى الدقيق للكلمة، فهو ليس ملف CSV إذن، والذي يرمز إلى “القيم المفصولة بفواصل” :wink:. لكنني أعرف أن امتداد الملف يستخدم على نطاق واسع أيضًا مع فواصل أخرى، والأهم من ذلك، أن فواصل الأسطر شائعة كفاصل لمجموعة البيانات، لذا يجب أن يعمل بريد إلكتروني واحد في كل سطر، و… إنه يعمل هنا.

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

line = CSV.parse_line(line).first&.strip

ثم يضيف قيمة line بأكملها كبريد إلكتروني واحد أو إدخال اسم مستخدم للمطابقة.

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

ومع ذلك، فإن الأسطر المتعددة أو القيم المتعددة ليست مشكلتك على أي حال، إذا فشلت في البريد الإلكتروني الأول على الرغم من أنه صحيح :thinking:. لست متأكدًا من كيفية تصحيح الأخطاء بسهولة دون إعادة بناء مثيل Discourse. هل تستخدم المثبت الرسمي لصورة Docker؟

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

اليوم تعلمت!

سأتحقق مع فريق تكنولوجيا المعلومات لدينا، فهم من قام بإعداده لذلك لست متأكدًا تمامًا مما إذا كان على Docker.

أيضًا، تحديث غريب إلى حد ما… أعتقد أنني قمت بحله، ولكن لا أعرف لماذا أو كيف. :sweat_smile:

إليك سلسلة الأحداث الحالية الخاصة بي:

  1. كان الملف الأصلي ملف .xlsx تم تنزيله من Salesforce، والذي قمت بحفظه كملف CSV - لم يمنح هذا المستخدم التجريبي الخاص بي، ولكنه عمل مع الآخرين.
  2. اختبرت ببريد إلكتروني واحد فقط في ملف CSV جديد - لم ينجح ذلك أيضًا.
  3. جربت بعض الأشياء لتنظيف البيانات - هذا هو الوقت الذي بدأت فيه في الحصول على خطأ 502 ولم يتم إرسال أي رسائل بريد إلكتروني. أعتقد أنني ربما أضفت حقولًا فارغة إضافية أو شيئًا غريبًا هنا جعل الملف كبيرًا جدًا وغير قابل للتحليل، وبالتالي خطأ 502 (الجديد).
  4. يبدو أن لصق رسائل البريد الإلكتروني من نفس ملف CSV في ملف CSV جديد وجديد قد حل المشكلة - تم منح المستخدم التجريبي الخاص بي الشارة! :tada:

… وربما الجزء الأكثر غرابة، هو الوحيد الذي كانت تنقصه الشارة؟! لا أعرف ما إذا كنت أصدق هذا تمامًا، لأنه يبدو غير مرجح أن تؤثر هذه المشكلة على بريده الإلكتروني فقط وليس على أي شخص آخر. إذا كان ذلك يحدث فرقًا، فقد كان بريده الإلكتروني هو البريد الإلكتروني الأول في الملف.

بخلاف ذلك، ربما هو ملعون فقط؟ :lolsob:

إعجابَين (2)

من الرائع أنك قمت بحلها. ربما دخلت بعض الأحرف الخاصة، مثل “test” و \"test\" هنا في discourse مما أدى إلى ظهور أحرف اقتباس مزدوجة مختلفة، على الرغم من أنني أدخلت نفس الشيء.

يوجد حد 50,000 إدخال في كود Discourse لملف CSV هذا، ربما يمكن تجاوزه باستخدام الإعدادات. ومع ذلك، أعتقد أنه لم يكن هناك 50,000 سطر؟ ربما يكون المحلل نفسه، أو حتى خادم الويب، لديه حدود أخرى أقل للحجم/الأحرف.

بالمناسبة، يمكنك ببساطة تمرير ملف CSV جديد يحتوي على جميع رسائل البريد الإلكتروني (وهذا البريد الإلكتروني المحدد تم تصحيحه) إلى شارة الدُفعات وسيعرض لك النتائج كما لو تم تعيين كل شيء من جديد. لذلك يمكنك التحقق والتأكد مما إذا كان الآخرون قد حصلوا عليه بالفعل.