English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

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

   Django يقدم محرك إرسال بريد إلكتروني خفيف وسهل الاستخدام. مثل Python، تحتاج إلى استيراد smtplib. في Django، تحتاج إلى استيراد django.core.mail. لإرسال بريد إلكتروني، قم بتعديل ملف إعدادات المشروع settings.py وتعيين الخيارات التالية −

EMAIL_HOST − خادم SMTP EMAIL_HOST_USER − معرف SMTP     EMAIL_HOST_PASSWORD − معرف SMTP سرية الخادم     EMAIL_PORT − منفذ SMTP لخادم البريد     EMAIL_USE_TLS أو   _SSL − إذا تم تعيينه على True فهو اتصال آمن.    

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

لنقم بإنشاء رؤية "sendSimpleEmail" لإرسال بريد إلكتروني بسيط.

# Filename : example.py
# Copyright : 2020 By w3codebox
# Author by : ar.oldtoolbag.com
# Date : 2020-08-08
from django.core.mail import send_mail
 from django.http import HttpResponse
 def sendSimpleEmail(request, emailto):
    res = send_mail("hello paul", "comment tu vas?", "[email protected]", [emailto]),
    return HttpResponse('%s'%res)

هذه هي تفاصيل send_mail −

subject − عنوان البريد الإلكتروني     message − محتوى عنوان البريد الإلكتروني     from_email − صاحب البريد الإلكتروني     recipient_list − قائمة عناوين البريد الإلكتروني للمستلمين     fail_silently − منطقية، إذا كانت غير صحيحة، فإن send_mail ستقوم بإثارة استثناء عند حدوث خطأ     auth_user − تسجيل الدخول للمستخدم، إذا لم يكن في settings.py     auth_password − كلمة المرور للمستخدم، إذا لم تكن في إعدادات settings.py     اتصال − واجهة بريد إلكتروني     html_message − (ميزة جديدة في Django1.7)، إذا كانت موجودة، فإن البريد الإلكتروني سيكون multipart/alternative.    

# Filename : example.py
# Copyright : 2020 By w3codebox
# Author by : ar.oldtoolbag.com
# Date : 2020-08-08

 urlpatterns = paterns('myapp.views', url(r'^simpleemail/(?P<emailto>',
    [\w.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4})/', 
    'sendSimpleEmail', name = 'sendSimpleEmail'),)

لذلك، عند زيارة /myapp/simpleemail/  [email protected]عند الدخول إلى /، سيتم الوصول إلى الصفحة التالية −  

إرسال عدة بريد إلكتروني باستخدام send_mass_mail

يستخدم هذا الطريقة لتحويل الرسائل بنجاح. وهي مشابهة لـ send_mail لكنها تحتاج إلى معامل إضافي؛ datatuple، لرؤية view sendMassEmail الخاصة بنا −

# Filename : example.py
# Copyright : 2020 By w3codebox
# Author by : ar.oldtoolbag.com
# Date : 2020-08-08
from django.core.mail import send_mass_mail
 from django.http import HttpResponse
 def sendMassEmail(request, emailto):
    msg1 = ('subject 1', 'message 1', '[email protected]', [emailto1])
    msg2 = ('subject 2', 'message 2', '[email protected]', [emailto2])
    res = send_mass_mail((msg1, msg2), fail_silently = False)
    return HttpResponse('%s'%res)

دعونا ننشئ عنوان URL لرؤية موقعنا −

# Filename : example.py
# Copyright : 2020 By w3codebox
# Author by : ar.oldtoolbag.com
# Date : 2020-08-08

 urlpatterns = paterns('myapp.views', url(r'^massEmail/(?P<emailto1>
    [\w.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4})/(?P<emailto2>
    [\w.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4})', 'sendMassEmail', name = 'sendMassEmail'),)

عند زيارتنا لـ /myapp/massemail/[email protected]/[email protected]/، نحصل على −  

تفاصيل معامل send_mass_mail كما يلي −

datatuples    − مجموعة، كل عنصر منها يشبه (الموضوع، الرسالة، البريد الإلكتروني المنبع، قائمة المستلمين)     fail_silently − برمجية منطقية، إذا كانت خطأ، فسيقوم send_mail بإصدار استثناء عند حدوث خطأ     auth_user − تسجيل الدخول للمستخدم، إذا لم يتم تعيينها في settings.py     auth_password − كلمة المرور للمستخدم، إذا لم يتم تعيينها في settings.py     اتصال − واجهة بريد إلكتروني    

كما يمكنك رؤيته في الصورة أعلاه، تم إرسال الرسالتين بنجاح.

ملاحظة - في هذا المثال، نستخدم smtpd debuggingserver الخاص بـ Python، يمكن تشغيله باستخدام الأمر التالي −

# Filename : example.py
# Copyright : 2020 By w3codebox
# Author by : ar.oldtoolbag.com
# Date : 2020-08-08
$python -m smtpd -n -c DebuggingServer localhost:1025

هذا يعني أن جميع الرسائل الإلكترونية التي تم إرسالها سيتم طباعتها في stdout وسيتم تشغيل الخادم الافتراضي على localhost:1025.

ارسال بريد إلكتروني باستخدام طرق mail_admins و mail_managers إلى إدارة الموقع والإدارة

هذه الطرق ترسل بريد إلكتروني إلى إدارة الموقع كخيار ADMINS في ملف settings.py، ويتم تعريف إدارة الموقع في عنصر MANAGERS في ملف settings.py. افترض أن looks like أدناه لـ ADMINS و MANAGERS لدينا:

ADMINS   = (('polo', '[email protected]'),)

MANAGERS = (('popoli', '[email protected]'),)

# Filename : example.py
# Copyright : 2020 By w3codebox
# Author by : ar.oldtoolbag.com
# Date : 2020-08-08
from django.core.mail import mail_admins
 from django.http import HttpResponse
 def sendAdminsEmail(request):
    res = mail_admins('my subject', 'site is going down.')
    return HttpResponse('%s'%res)

البرنامج أعلاه سيقوم بإرسال بريد إلكتروني إلى كل مدير في جزء ADMINS المحدد.

# Filename : example.py
# Copyright : 2020 By w3codebox
# Author by : ar.oldtoolbag.com
# Date : 2020-08-08
from django.core.mail import mail_managers
 from django.http import HttpResponse
 def sendManagersEmail(request):
    res = mail_managers('my subject 2', 'Change date on the site.')
    return HttpResponse('%s'%res)

البرنامج أعلاه سيقوم بإرسال بريد إلكتروني إلى كل مدير في جزء MANAGERS المحدد.

تفاصيل المعاملات parameter details −

Subject − عنوان البريد الإلكتروني.     message − عنوان البريد الإلكتروني.     fail_silently − برمجية منطقية، إذا كانت خطأ، فسيقوم send_mail بإصدار استثناء عند حدوث خطأ     اتصال − واجهة بريد إلكتروني.     html_message − (ميزة جديدة في Django1.7)، إذا كانت موجودة، فإن البريد الإلكتروني سيكون multipart/alternative.    

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

بسهولة مثل ارسال رسالة HTML في Django>=1.7 -

# Filename : example.py
# Copyright : 2020 By w3codebox
# Author by : ar.oldtoolbag.com
# Date : 2020-08-08
from django.core.mail import send_mail
 from django.http import HttpResponse
    res = send_mail("hello paul", "comment tu vas?", "[email protected]", 
          ["[email protected]"], html_message=")

سيتم إنشاء بريد إلكتروني multipart/alternative.

لكن بالنسبة لدjango <1.7 يتم إرسال بريد إلكتروني HTML من خلال كائن "mailMessage" في django.core.mail، ثم دعوة الكائن "send"−

لنشاء عرض "sendHTMLEmail" لإرسال بريد إلكتروني HTML.

# Filename : example.py
# Copyright : 2020 By w3codebox
# Author by : ar.oldtoolbag.com
# Date : 2020-08-08
from django.core.mail import EmailMessage
 from django.http import HttpResponse
 def sendHTMLEmail(request, emailto):
    html_content = "<strong>Comment tu vas?</strong>"
    email = EmailMessage("my subject", html_content, "[email protected]", [emailto])
    email.content_subtype = "html"
    res = email.send()
    return HttpResponse('%s'%res)

فئة إنشاء رسالة بريد إلكتروني تحتوي على تفاصيل معقدة للاسماء −

Subject − عنوان البريد الإلكتروني.     message − نص البريد الإلكتروني باللغة HTML.     from_email − مصدر البريد الإلكتروني.     to − قائمة عناوين البريد الإلكتروني للمستلمين.     bcc − قائمة عناوين البريد الإلكتروني للمستلمين المسرحين.     اتصال − خلفية البريد الإلكتروني.    

لنشاء عنوان الرابط لعرض الوجهة −

# Filename : example.py
# Copyright : 2020 By w3codebox
# Author by : ar.oldtoolbag.com
# Date : 2020-08-08

 urlpatterns = patterns('myapp.views', url(r'^htmlemail/(?P<emailto>
    [\w.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4})/', 
    'sendHTMLEmail', name = 'sendHTMLEmail'),)

عند زيارتنا لـ /myapp/htmlemail/[email protected]، سنحصل على الآتي −  

إرسال بريد إلكتروني يحتوي على مرفقات

هذا يتم من خلال استخدام طريقة "attach" على كائن "EmailMessage".

نموذج لإرسال بريد إلكتروني، المرفقات كما يلي −

# Filename : example.py
# Copyright : 2020 By w3codebox
# Author by : ar.oldtoolbag.com
# Date : 2020-08-08
from django.core.mail import EmailMessage
 from django.http import HttpResponse
 def sendEmailWithAttach(request, emailto):
    html_content = "Comment tu vas?"
    email = EmailMessage("my subject", html_content, "[email protected]", emailto)
    email.content_subtype = "html"
    fd = open('manage.py', 'r')
    email.attach('manage.py', fd.read(), 'text/plain')
    res = email.send()
    return HttpResponse('%s'%res)

المعلومات التفصيلية في المرفق −

filename − اسم الملف المرفق     content − محتويات الملف، كملحق.     mimetype − نوع MIME للمرفقات.