إرسال رسائل بريد إلكتروني من تطبيقات Python Flask باستخدام Twilio SendGrid

نشرت: 2020-06-30

إن تحديد ما إذا كنت تريد إنشاء البنية التحتية للبريد الإلكتروني أو شراؤها ليس قرارًا بسيطًا. هل لديك النطاق الترددي لدعم مشاكل التسليم؟ هل ستكون قادرًا على مواكبة إرسالك أثناء نموك؟ ما هو أكثر فعالية من حيث التكلفة؟ في حين أن هناك عددًا من العوامل التي يجب مراعاتها ، فهذه محادثة لدليل آخر (مثل دليل Build it أو Buy It ).

بدلاً من ذلك ، سيوضح لك هذا البرنامج التعليمي مدى سهولة إرسال البريد الإلكتروني عبر خدمة بريد إلكتروني مخصصة. سنتعرف على كيفية تسليم البريد الإلكتروني من خلال Twilio SendGrid باستخدام إطار عمل Flask وامتداد Flask-Mail .

أدوات البرنامج التعليمي

لمتابعة هذا البرنامج التعليمي ، تحتاج إلى العناصر التالية:

  • Python 3.6 أو أحدث. إذا كان نظام التشغيل الخاص بك لا يوفر مترجم Python 3.6+ ، فيمكنك الانتقال إلى python.org لتنزيل برنامج التثبيت.
  • حساب Twilio SendGrid مجاني. إذا كنت جديدًا في Twilio SendGrid ، فقم بالتسجيل للحصول على حساب تجريبي . باستخدام حساب تجريبي ، يمكنك إرسال 40،000 بريد إلكتروني لمدة 30 يومًا ، ثم إرسال 100 بريد إلكتروني يوميًا إلى الأبد.

جارٍ الإعداد مع SendGrid

قبل أن تتمكن من إرسال بريد إلكتروني عبر SendGrid ، يجب عليك إنشاء مفتاح API تستخدمه لمصادقة الوصول إلى خدمات SendGrid. قم بتسجيل الدخول إلى حساب SendGrid الخاص بك ، ثم انقر فوق الشريط الجانبي الأيسر وحدد "الإعدادات" ثم مفاتيح API . انقر فوق "إنشاء مفتاح API".

امنح مفتاح API اسمًا مألوفًا (اجعله بسيطًا ومباشرًا حتى تتذكر ما يشير إليه!). في هذا البرنامج التعليمي ، اخترنا اسم Flask-Mail . اخترنا "الوصول الكامل" للأذونات ، والتي تمنح المفتاح القدرة على أداء جميع وظائف إرسال البريد الإلكتروني الضرورية (الوصول إلى نقاط النهاية GET و PATCH و PUT و DELETE و POST). إذا كنت تفضل إنشاء مفتاح له أذونات محددة جدًا ، فحدد "وصول مقيد" وقم بتهيئة وصولك حسب الحاجة.

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

بناء بيئة بايثون

الآن بعد أن اكتمل الإعداد ، يمكننا الغوص في كيفية إرسال بريد إلكتروني من تطبيقات Python Flask. سنبدأ بإنشاء دليل جديد على جهاز الكمبيوتر الخاص بك يسمى * twilio-sendgrid-tests * (أو شيء مشابه) ، ثم إنشاء بيئة افتراضية Python جديدة بداخله.

بالنسبة لمستخدمي Mac و Unix ، فإن الأوامر هي:

لمستخدمي Windows ، الأوامر هي:

بعد ذلك ، قم بتثبيت Flask و Flask-Mail و python-dotenv في بيئتك الافتراضية:

إعداد تطبيق Flask

لنقم ببناء تطبيق Starter Flask و Flask-Mail في ملف app.py :

هنا يمكنك معرفة كيفية تكوين Flask-Mail بشكل صحيح لاستخدام خدمة SMTP في SendGrid. الإعدادات المهمة هي:

  • يجب أن يكون خادم البريد "smtp.sendgrid.net".
  • يجب أن يكون منفذ البريد 587. (هل تعرف المنافذ التي يجب استخدامها ومتى؟ تحقق من منشور المدونة هذا. )
  • يجب تمكين TLS. (ما الفرق بين SSL و TLS ؟)
  • مطلوب التوثيق. بالنسبة لاسم المستخدم ، يجب عليك استخدام "apikey" (هذا هو نفسه لجميع حسابات SendGrid). كلمة المرور هي مفتاح SendGrid API الذي قمت بإنشائه في القسم السابق.

بالنسبة إلى تطبيق Flask هذا ، أضفنا الإعدادات المذكورة أعلاه في مفاتيح التكوين المناسبة لملحق Flask-Mail. لأسباب أمنية ، قمنا باستيراد مفتاح API من متغير بيئة يسمى "SENDGRID_API_KEY". نقوم أيضًا بتعيين عنوان بريد إلكتروني افتراضي للمرسل من متغير البيئة. هذا هو عنوان البريد الإلكتروني الذي سيظهر افتراضيًا في حقل "من" لجميع رسائل البريد الإلكتروني.

قم بإنشاء ملف .env بالمتغيرين المطلوبين:

سيقوم Flask تلقائيًا باستيراد المتغيرات المحددة في ملف .env (طالما لديك حزمة python-dotenv مثبتة) ، لذلك هذا يكفي للحصول على هذين المتغيرين في تكوين تطبيق Flask.

إرسال بريد إلكتروني تجريبي

دعونا نرى كيف يمكنك أن ترسل لنفسك بريدًا إلكترونيًا اختباريًا من صدفة Python:

لاحظ أننا بدأنا قشرة بايثون باستخدام الأمر "flask shell". سيضمن هذا استيراد تطبيق Flask الذي أنشأناه في app.py.

بمجرد دخولك إلى shell ، استورد مثيل "mail" الذي أنشأناه في app.py وفئة "الرسائل" من Flask-Mail:

بعد ذلك ، أنشئ نسخة "رسالة":

الخطوة الأخيرة هي إرسال هذا البريد الإلكتروني:

وهذا كل شيء! إذا سارت الأمور وفقًا للخطة ، فمن المفترض أن يصل البريد الإلكتروني إلى بريدك الوارد في غضون ثوانٍ قليلة.

إذا كنت تريد رؤية مثال مسار Flask الذي يدمج هذه الوظيفة ، فإليك مثالًا بسيطًا يمكنك إضافته في الجزء السفلي من app.py :

لإكمال التطبيق النموذجي ، تحتاج إلى إضافة ملف نموذج index.html . قم أولاً بإنشاء دليل للقوالب الخاصة بك:

ثم اكتب المحتوى التالي في ملف القوالب / index.html :

قم بتشغيل تطبيق الاختبار باستخدام:

ثم انتقل إلى http: // localhost: 5000 في متصفح الويب الخاص بك للوصول إلى التطبيق.

يمكنك الآن إدخال عنوان البريد الإلكتروني للمستلم وعند النقر فوق الزر ، سيتم إرسال بريد إلكتروني تجريبي إلى هذا العنوان.

استكشاف مشاكل التسليم وإصلاحها

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

لحسن الحظ ، إذا واجهت هذا عن طريق إرسال بريد إلكتروني كما وصفنا ، يمكنك استخدام لوحة معلومات Twilio SendGrid لمساعدتك في تصحيح ما حدث. من لوحة معلومات SendGrid ، انقر على النشاط ، ثم على زر "إظهار كل النشاط" في منتصف الصفحة. سيُظهر لك هذا قائمة بجميع رسائل البريد الإلكتروني التي حاولت إرسالها ، مما يشير إلى ما إذا تم تسليمها بنجاح أم لا.

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

بمجرد تحديد سبب عدم إرسال رسائل البريد الإلكتروني الخاصة بك ، هناك عدد من الطرق لحل مشكلات التسليم هذه. إذا رأيت عددًا من الأخطاء الإملائية في رسائل البريد الإلكتروني (على سبيل المثال @ yaho.com أو @ gmal.com) ، فقد يكون من المفيد استكشاف أداة التحقق من البريد الإلكتروني للقبض على أي أخطاء إملائية شائعة في قائمة جهات اتصال البريد الإلكتروني.

هناك العديد من المشكلات الأخرى التي يمكن أن تؤدي إلى فشل التسليم ، بما في ذلك سوء سمعة الإرسال أو حظر عنوان IP. تعرف على كل شيء عن إمكانية تسليم البريد الإلكتروني في دليل تسليم البريد الإلكتروني لعام 2020 .

خاتمة

كما ترى من البرنامج التعليمي ، يتكامل Twilio SendGrid بسهولة في سير عمل إرسال البريد الإلكتروني في Flask ، مما يجعل إرسال البريد الإلكتروني مهمة بسيطة.

إذا كنت تتساءل الآن عن كيفية تلقي رسائل البريد الإلكتروني من Flask Framework في Python ، فلا داعي للقلق ، فقد قمنا بتغطيتك! تحقق من هذا المقال: كيفية تلقي رسائل البريد الإلكتروني باستخدام Flask Framework لـ Python .

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