English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Django يقدم محرك إرسال بريد إلكتروني خفيف وسهل الاستخدام. مثل Python، تحتاج إلى استيراد smtplib. في Django، تحتاج إلى استيراد django.core.mail. لإرسال بريد إلكتروني، قم بتعديل ملف إعدادات المشروع settings.py وتعيين الخيارات التالية −
لنقم بإنشاء رؤية "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_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 في 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 للمرفقات.