هل هناك طريقة لتمديد مهلة الانتظار عندما ينتظر Discourse خادم SMTP لإرجاع إقرار بأن رسالة بريد إلكتروني قد تم إرسالها؟ بدلاً من ذلك، هل هناك طريقة لتكوين Discourse لعدم طلب هذا الإقرار.
أواجه مشكلة حيث يقوم Discourse بإنشاء رسائل بريد إلكتروني مكررة. يتلقى Discourse خطأ Net::Timeout عند إرسال رسائل البريد الإلكتروني للتسليم. يقوم مزود البريد الإلكتروني الخاص بي بتسليم رسائل البريد الإلكتروني بالفعل، لكن Discourse لا يعرف ذلك ويستمر في إعادة إرسال رسائل البريد الإلكتروني. يتكرر هذا بلا نهاية.
لم أتمكن من العثور على أي تغييرات ذات صلة في الجواهر البرمجية mail و net/smtp في روبي. ربما يكون خادم SMTP الخاص بك يتصرف بشكل سيء؟ هل سيكون من الممكن لك الانتقال إلى خادم آخر؟
شكراً لك على التحقق. أتفق معك، يبدو أن مزود خدمة البريد الإلكتروني الخاص بي هو سبب المشكلة حيث أنه لا يستجيب بسرعة كافية بعد إرسال بريد إلكتروني. لا يمكنني إلا أن أستنتج أن المشكلة تتعلق بالتحميل بطريقة ما، حيث أنني لا أواجه المشكلة في بعض الأيام.
تغيير مزودي خدمة البريد الإلكتروني يمثل تحديًا كبيرًا لعدد من الأسباب. إيجاد طريقة لتكوين Discourse للعمل حول هذه المشكلة هو الحل الأكثر جاذبية.
يبدو أن الانتقال إلى مزود بريد جديد هو الحل الوحيد لهذه المشكلة، ولكن هذا يتطلب مني إعادة تكوين مزود البريد لنطاقي بالكامل، وهي مهمة أود تجنبها.
هل هناك أي تغيير يمكنني إجراؤه على كود Discourse الذي يتعامل مع البريد الصادر لجعله يتجاهل فشل إرسال البريد، كما كان يفعل في الماضي؟ أنا لست مطور Rails، لذا لست متأكدًا من أين أبدأ. لا أريد كسر قدرتي على قبول تحديثات Discourse المستقبلية.
على ماذا تستند في البيان أعلاه؟ يمكنك فقط استقبال البريد مقابل مجموعة واحدة من البنية التحتية لكل نطاق/نطاق فرعي، ولكن يمكن لعدة خدمات إعادة توجيه البريد نيابة عنه.
بدلاً من ذلك، يمكنك أيضًا إنشاء نطاق فرعي جديد مخصص لمثيلك، والذي لا يتطلب حتى إعادة بناء للتكوين.
لقد حاولت القيام بذلك في وقت سابق وكنت قد أخطأت في الإعداد ولم أتمكن من معرفة ذلك، ومن هنا يأتي ترددي في تغيير أي شيء. كنت أفضل أيضًا أن تكون رسائل البريد الإلكتروني الخاصة بـ Discourse صادرة من نطاق شركتي، ولكن نظرًا لأن هذا لن ينجح بعد الآن، سأحاول مرة أخرى القيام بما تقترحه واستخدام نطاق فرعي للبريد الإلكتروني الصادر.
لقد أنشأت نطاقًا فرعيًا للبريد الإلكتروني باستخدام RackSpace Cloud وتأكدت من إمكانية إرسال البريد من خلاله من جهاز Mac الخاص بي باستخدام Apple Mail و curl. لقد تأكدت أيضًا من إمكانية إرسال البريد من الخادم الخاص بي باستخدام curl. ومع ذلك، أحصل على هذا الخطأ من discourse-doctor:
Testing sending to support@latenightsw.com using secure.emailsrvr.com:465, username:username with plain auth.
======================================== ERROR ========================================
UNEXPECTED ERROR
Net::ReadTimeout
====================================== SOLUTION =======================================
This is not a common error. No recommended solution exists!
Please report the exact error message above to https://meta.discourse.org/
(And a solution, if you find one!)
يحتوي ملف app.yml الخاص بي على هذه الإعدادات:
DISCOURSE_SMTP_ADDRESS: secure.emailsrvr.com # (mandatory)
DISCOURSE_SMTP_PORT: 465 # (optional)
DISCOURSE_SMTP_USER_NAME: username # (optional)
DISCOURSE_SMTP_PASSWORD: password # (optional, WARNING the char '#' in pw can cause problems!)
#DISCOURSE_SMTP_ENABLE_START_TLS: true # (optional, default true)