J'utilise html
comme message dans un e-mail et passe certaines variables comme celui-ci:Utiliser les variables dans send_email()
subject = 'Some Subject'
plain = render_to_string('templates/email/message.txt',{'name':variableWithSomeValue,'email':otherVariable})
html = render_to_string('templates/email/message.html',{'name':variableWithSomeValue,'email':otherVariable})
from_email = setting.EMAIL_HOST_USER
send_email(subject, plain, from_email, [variableToEmail], fail_silently=False, html_message=html)
qui fonctionne bien, mais maintenant je dois prendre le contenu du message d'une table de la base de données, la table a trois colonnes, dans le premier registre ont ces valeurs dans chaque colonne. Colonne subject
ont Account Info
, colonne plain
ont Hello {{name}}. Now you can access to the site using this email address {{email}}.
et la colonne html
ont <p>Hello <strong>{{name}}</strong>.</p> <p>Now you can access to the site using this email address <strong>email</strong>.</p>
.
Donc, pour prendre les valeurs de la base de données que je fais obj = ModelTable.objects.get(id=1)
alors ceci:
subject = obj.subject
plain = (obj.plain,{'name':variableWithSomeValue,'email':otherVariable})
html = (obj.html,{'name':variableWithSomeValue,'email':otherVariable})
from_email = setting.EMAIL_HOST_USER
send_email(subject, plain, from_email, [variableToEmail], fail_silently=False, html_message=html)
Mais cela me donne l'erreur
AttributeError: 'tuple' object has no attribute 'encode'
donc j'ai essayé de passer .encode(´utf-8´)
pour les valeurs et donne moi la même erreur, puis changer la valeur pour chaque variable et de trouver que le problème vient de plain = (obj.plain,{'name':variableWithSomeValue,'email':otherVariable})
et html = (obj.html,{'name':variableWithSomeValue,'email':otherVariable})
donc je pense que je passe les variables dans le mauvais sens, donc Comment ca n Je le fais de la bonne façon? ou peut-être est pour l'encodage de la base de données, mais je pense que l'utilisation .encode(utf-8)
devrait résoudre ce problème, mais je pense vraiment que je passe les variables name
et email
dans le mauvais sens.
Désolé pour le poste long et ma mauvaise grammaire, si besoin plus d'informations s'il vous plaît faites le moi savoir.
Merci beaucoup, cela fonctionne parfaitement –