Saya ingin mengirim email-HTML, menggunakan templat Django seperti ini:
<html>
<body>
hello <strong>{{username}}</strong>
your account activated.
<img src="mysite.com/logo.gif" />
</body>
Saya tidak dapat menemukan apa pun tentangnya send_mail
, dan Django-mailer hanya mengirim templat HTML, tanpa data dinamis.
Bagaimana cara saya menggunakan mesin template Django untuk menghasilkan email?
django
email
django-email
django-mailer
Anakin
sumber
sumber
1.7
penawaran Djangohtml_message
disend_email
stackoverflow.com/a/28476681/953553Jawaban:
Dari dokumen , untuk mengirim email HTML Anda ingin menggunakan tipe konten alternatif, seperti ini:
Anda mungkin ingin dua templat untuk surel Anda - satu templat teks polos yang terlihat seperti ini, disimpan di direktori templat di bawah
email.txt
:dan yang HTMLy, disimpan di bawah
email.html
:Anda kemudian dapat mengirim email menggunakan kedua templat tersebut dengan memanfaatkan
get_template
, seperti ini:sumber
plaintext
danhtmly
, dan hanya mengatur templat dan konteks ketika Anda mendefinisikantext_content
danhtml_content
.Anak laki-laki dan anak perempuan!
Sejak Django 1.7 dalam metode send_email
html_message
parameter ditambahkan.Jadi Anda bisa:
sumber
render_to_string
petunjuknya, sangat berguna.send_mail
tidak mungkin untuk mengatur beberapa tajuk khusus seperti misalnyaReturn-Path
yang dapat diatur denganEmailMultiAlternatives's constructor header parameter
Saya telah membuat django-templated-email dalam upaya untuk menyelesaikan masalah ini, terinspirasi oleh solusi ini (dan kebutuhan untuk, di beberapa titik, beralih dari menggunakan templat Django ke menggunakan mailchimp dll. Set templat untuk transaksional, templated email untuk proyek saya sendiri). Ini masih dalam proses, tetapi untuk contoh di atas, Anda akan melakukan:
Dengan tambahan berikut ini ke settings.py (untuk melengkapi contoh):
Ini akan secara otomatis mencari templat bernama 'templated_email / email.txt' dan 'templated_email / email.html' untuk masing-masing bagian html dan polos, di dir / loader template django normal (mengeluh jika tidak dapat menemukan setidaknya salah satu dari mereka) .
sumber
django.shortcuts.send_templated_mail
: code.djangoproject.com/ticket/17193Gunakan EmailMultiAlternatives dan render_to_string untuk memanfaatkan dua templat alternatif (satu dalam teks biasa dan satu dalam html):
sumber
Saya telah membuat Django Simple Mail untuk memiliki templat yang sederhana, dapat disesuaikan dan dapat digunakan kembali untuk setiap email transaksional yang ingin Anda kirim.
Konten dan templat email dapat diedit langsung dari admin django.
Dengan contoh Anda, Anda akan mendaftarkan email Anda:
Dan kirimkan dengan cara ini:
Saya ingin sekali mendapat tanggapan.
sumber
Ada kesalahan dalam contoh .... jika Anda menggunakannya sebagai tertulis, kesalahan berikut terjadi:
Anda perlu menambahkan impor berikut:
dan ubah kamus menjadi:
Lihat http://docs.djangoproject.com/en/1.2/ref/templates/api/#rendering-a-context
sumber
Django Mail Templated adalah aplikasi Django yang kaya fitur untuk mengirim email dengan sistem template Django.
Instalasi:
Konfigurasi:
Templat:
Python:
Info lebih lanjut: https://github.com/artemrizhov/django-mail-templated
sumber
Saya tahu ini adalah pertanyaan lama, tetapi saya juga tahu bahwa beberapa orang sama seperti saya dan selalu mencari jawaban yang uptodate , karena jawaban lama terkadang dapat memiliki informasi yang sudah usang jika tidak diperbarui.
Sekarang Januari 2020, dan saya menggunakan Django 2.2.6 dan Python 3.7
Catatan: Saya menggunakan DJANGO REST FRAMEWORK , kode di bawah ini untuk mengirim email menggunakan model viewset di
views.py
Jadi setelah membaca beberapa jawaban yang bagus, inilah yang saya lakukan.
Penting! Jadi bagaimana
render_to_string
mendapatkanreceipt_email.txt
danreceipt_email.html
? Di sayasettings.py
, saya punyaTEMPLATES
dan di bawah ini adalah tampilannyaPerhatikan
DIRS
, ada baris inios.path.join(BASE_DIR, 'templates', 'email_templates')
. Baris ini yang membuat templat saya dapat diakses. Dalam project_dir saya, saya memiliki folder bernamatemplates
, dan sub_directory dipanggilemail_templates
seperti iniproject_dir->templates->email_templates
. Templat sayareceipt_email.txt
danreceipt_email.html
berada di bawahemail_templates
subdirektori.Biarkan saya tambahkan saja,
recept_email.txt
penampilan saya seperti ini;Dan,
receipt_email.html
penampilan saya seperti ini;sumber
Saya menulis cuplikan yang memungkinkan Anda mengirim email yang diberikan dengan templat yang disimpan dalam database. Sebuah contoh:
sumber
Jika Anda ingin templat email dinamis untuk surel Anda maka simpan konten surel dalam tabel basis data Anda. Ini yang saya simpan sebagai kode HTML di database =
Menurut pandangan Anda:
Ini akan mengirimkan template HTML dinamis apa yang telah Anda simpan di Db.
sumber
send_emai()
tidak bekerja untuk saya jadi saya gunakanEmailMessage
di sini di django docs .Saya telah memasukkan dua versi anser:
Jika Anda ingin memasukkan versi teks biasa dari email Anda, ubah yang di atas seperti ini:
Versi html dan polos saya terlihat seperti ini: plain_version.html:
html_version.html
sumber
Saya suka menggunakan alat ini untuk memudahkan mengirim email HTML dan TXT dengan pemrosesan konteks yang mudah: https://github.com/divio/django-emailit
sumber