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

السؤال

نشر

أرغب في إرسال رسائل بريد إلكتروني بتنسيق HTML، باستخدام قوالب جانغو Django مثل هذا الكود:

<body>
مرحبًا <strong>{{ username }}</strong>
تم تفعيل حسابك بنجاح
<img src="example.com/logo.png" />
</body>

لا يمكنني العثور على أي شيء حول كيفية إرسال رسالة بريد إلكتروني كالرسالة السابقة إلا من خلال django-mailer والذي يقوم بإرسال قوالب HTML بدون بيانات ديناميكية.

كيف يمكنني استخدام محرك قوالب جانغو Django لإنشاء رسائل بريد إلكتروني؟

Recommended Posts

  • 2
نشر

بداية من الإصدار 1.7 جانغو Django أصبح بإمكانك إضافة بيانات ديناميكية من خلال المعامل html_message. إذا تم توفير المعامل html_message (قيمته ليست None)، فسيكون بإمكانك أن تستخدم متغيرات في نص البريد الإلكتروني، ولإتمام هذه العملية ستحتاج إلى إستعمال الدالة render_to_string لكي تستطيع عمل النص، وبالتالي يمكنك عمل الرسالة على النحو التالي:

from django.template.loader import render_to_string
from django.core.mail import EmailMultiAlternatives

username = "My Username"
msg_plain = render_to_string('templates/email.txt', {'username': username})
msg_html = render_to_string('templates/email.html', {'username': username})

msg = EmailMultiAlternatives('عنوان الرسالة', msg_plain, 'info@example.com', ['username@gmail.com'])
msg.attach_alternative(msg_html, "text/html")
msg.send()

بهذه الطريقة سوف يتم توليد نص البريد الإلكتروني من خلال المتغيرات التي يمكنك تمريرها إلى الدالة render_to_string، وفي النهاية تقوم بإرسالة هذه الرسالة بشكل عادي.

  • 0
نشر (معدل)

في الإصدارات الأحدث من جانغو تم إضافة الوسيط html_message  للدالة send_mail لإرسال ملفات ال HTML مع البريد الالكتروني. قد تحتاج إلى نموذجين لبريدك الإلكتروني - نموذج نص عادي، مخزن في مجلد القوالب ضمن email.txt، وآخر لملف ال HTML.

from django.template.loader import render_to_string
from django.core.mail import send_mail as email
# تحديد الرسائل
#templates تحميل ال
# تحميل قالب النص
text = render_to_string('templates/email.txt', {'some_params': some_params})
#html تحميل قالب ملف ال 
Html = render_to_string('templates/email.html', {'some_params': some_params})
# إرسال الرسائل
email(
    'email title', # عنوان الايميل
    text,  # النص
    'some@sender.com', # المرسل
    ['some@receiver.com'], # المستقبل/المستقبلين
    html_message=msg_html, # ملف الاتش تي ام ال المرفق
)

 

تم التعديل في بواسطة 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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...