Como todos sabemos (o debería), se puede usar el sistema de plantillas de Django para hacer que los cuerpos de correo electrónico:correo electrónico de plantillas de Django
def email(email, subject, template, context):
from django.core.mail import send_mail
from django.template import loader, Context
send_mail(subject, loader.get_template(template).render(Context(context)), '[email protected]', [email,])
Esto tiene un defecto en mi mente: para editar el asunto y el contenido de una correo electrónico, debe editar tanto la vista como la plantilla. Si bien puedo justificar el acceso de los usuarios administradores a las plantillas, ¡no les estoy dando acceso a python en bruto!
Lo que sería realmente interesante es si se puede especificar bloques en el correo electrónico y tirar de ellos por separado cuando se envía el correo electrónico:
{% block subject %}This is my subject{% endblock %}
{% block plaintext %}My body{% endblock%}
{% block html %}My HTML body{% endblock%}
Pero ¿cómo hacer eso? ¿Cómo harías para renderizar solo un bloque a la vez?
Bueno & * # $ mí. Funciona. Se está considerando agregar más campos a la base para permitir establecer las configuraciones from/from-name/reply-to. – Oli
Hah, he estado haciendo esto con tres plantillas diferentes, que es un PITA. ¡Definitivamente +1 de mi parte! –
Me gusta. Siempre había usado plantillas separadas, lo que funciona bien, pero esto es mucho más agradable de tratar (especialmente porque generalmente quiere el mismo contexto para todas las plantillas de todos modos). –