Comme nous le savons tous (ou devrait), vous pouvez utiliser le système de template de Django pour rendre les corps e-mail:Email templating dans 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,])
Cela a une faille dans mon esprit: pour modifier le sujet et le contenu d'un email, vous devez éditer à la fois la vue et le modèle. Bien que je puisse justifier de donner aux administrateurs l'accès aux modèles, je ne leur donne pas accès au python brut!
Quelle serait vraiment cool est si vous pouvez spécifier des blocs dans l'e-mail et de les sortir séparément lorsque vous envoyez l'email:
{% block subject %}This is my subject{% endblock %}
{% block plaintext %}My body{% endblock%}
{% block html %}My HTML body{% endblock%}
Mais comment voulez-vous faire? Comment voulez-vous rendre un seul bloc à la fois?
Well & * $ # moi. Ça marche. Envisager d'ajouter plus de champs à la base pour permettre de définir les paramètres from/from-name/reply-to. – Oli
Hah, je l'ai fait avec trois modèles différents qui est un PITA. Défini +1 de moi! –
J'aime ça. J'ai toujours utilisé des modèles séparés, ce qui fonctionne bien, mais c'est beaucoup plus agréable à gérer (d'autant plus que vous voulez généralement le même contexte pour tous les modèles de toute façon). –