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

السؤال

نشر

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

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

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

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

Recommended Posts

  • 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
  • 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، وفي النهاية تقوم بإرسالة هذه الرسالة بشكل عادي.

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...