اذهب إلى المحتوى
  • 0

كيفية إرسال بريد إلكتروني من خلال جانغو Django؟

Amer Abdallah

السؤال

أحاول أن أقوم بإرسال رسالة إلى البريد الإلكتروني، لذلك قمت ببعض التعديلات في ملف settings.py الخاص بي:

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'

EMAIL_HOST = 'localhost'
EMAIL_PORT = 1025
EMAIL_HOST_USER = ''
EMAIL_HOST_PASSWORD = ''
EMAIL_USE_TLS = False

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

from django.core.mail import EmailMessage

email = EmailMessage('my title', 'Hello, World!', to=['example@gmail.com'])
email.send()

بالطبع ، إذا قمت بإعداد خادم تصحيح أخطاء debugging server من خلال الأمر التالي، فيمكنني رؤية البريد الإلكتروني في الـ terminal:

python -m smtpd -n -c DebuggingServer localhost: 1025

لكن كيف يمكنني إرسال البريد الإلكتروني ليس إلى خادم التصحيح ولكن إلى example@gmail.com، أي كيف يمكنني إرسال رسالة حقيقية إلى بريد إلكتروني حقيقي؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

لأرسل رسائل البريد الإلكتروني تحتاج إلى خادم SMTP حقيقي. إذا لم ترغب في تثبيت خادم SMTP خاص بك، فيمكنك العثور على الشركات التي توفر خادم SMTP بمقابل مادي أو تستخدم بديل مجاني مثل Google نفسها. أستخدام Gmail كخادم SMTP لـ Django أسهل بكثير من التعامل أي خادم آخر. ولعمل ذلك تحتاج إلى تعديل إعدادات المشروع.

في ملف settings.py:

EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'me@gmail.com'
EMAIL_HOST_PASSWORD = 'password'

قم بإضافة البريد الإكتروني الخاص بك وإستخدم كلمة سر مؤقتة من خلال ما يسمى بـ less secure apps في جوجل (لا تستخدم كلمة المرور الخاصة بك في أي مكان ظاهر مثل ملف settings.py أو غيره من الملفات لأنك لا تعلم من سيمكنه قراءة هذا الملف في المستقبل).

ملاحظة: بداية من 2016 لم تعد جوجل تقبل إستخدام كلمة المرور بالشكل السابق، بدلًا من ذلك أصبحت جوجل توفر ما يسمى بالتطبيقات الأقل أمانًا من خلال الذهاب Security > Account permissions > Access for less secure apps، حيث سوف تقوم بالحصول على كلمة سر مخصصة لإستخدامها في هذا التطبيق/المشروع بالتحديد ولا يمكن إستخدام كلمة السر هذه للدخول إلى حسابك بالكامل، بل فقط تستخدم لإرسال رسائل البريد الإلكتروني (أو حسب إعدادات التطبيق في جوجل).

من الأفضل أيضًا أن تضع البريد الإلكتروني وكلمة المرور في متغيرات بيئة environment variable وإستخدام هذه المتغيرات في ملف settings.py

بعد إتمام الإعدادات السابقة سيمكنك أن ترسل الرسائل من خلال الكود التالي:

from django.core.mail import EmailMessage

emails = ['another@email.com']
email = EmailMessage('Subject', 'Body', to=emails)
email.send()

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

قم أولاً بإنشاء حساب SendGrid (إرسال بريد إلكتروني باستخدام SendGrid هو مجاني ويصل إلى 12 ألف بريد إلكتروني كل شهر) من الرابط التالي (https://signup.sendgrid.com/). ثم أضف المعلومات التالية إلى ملف settings.py:

EMAIL_HOST = 'smtp.sendgrid.net'
EMAIL_HOST_USER = '<your sendgrid username>'
EMAIL_HOST_PASSWORD = '<your sendgrid password>'
EMAIL_PORT = 587
EMAIL_USE_TLS = True

والآن يمكنك إرسال الإيميل:

from django.core.mail import send_mail
send_mail('<Your subject>', '<Your message>', 'from@example.com', ['to@example.com'])

وإذا كنت تريد من Django أن يرسل إليك بريداً إلكترونياً عندما يكون هناك خطأ 500 داخلي في الخادم ، فأضف ما يلي إلى settings. py:

DEFAULT_FROM_EMAIL = 'your.email@example.com'
ADMINS = [('<Your name>', 'your.email@example.com')]

كما يمكنك استخدام "Test Mail Server Tool" لاختبار إرسال البريد الإلكتروني على جهازك أو المضيف المحلي. قم بتنزيل "Test Mail Server Tool" وقم بإعدادها، ثم في ملف settings. py :

EMAIL_BACKEND= 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'localhost'
EMAIL_PORT = 25

ثم استخدم send_mail للإرسال:

from django.core.mail import send_mail
send_mail('subject','message','sender email',
          ['receipient email'],fail_silently=False
)

 

تم التعديل في بواسطة Ali Haidar Ahmad
رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...