I html
als Nachricht in einer E-Mail verwenden und einige Variablen wie folgt passieren:Verwenden Variablen in 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)
Das gut funktioniert, aber jetzt muss ich aus der Datenbank den Nachrichteninhalt von einem Tisch nehmen, die Tabelle hat drei Spalten, im ersten Register haben Sie diese Werte in jeder Spalte. Spalte subject
haben Account Info
, Spalte plain
haben Hello {{name}}. Now you can access to the site using this email address {{email}}.
und die Spalte html
haben <p>Hello <strong>{{name}}</strong>.</p> <p>Now you can access to the site using this email address <strong>email</strong>.</p>
.
So die Werte aus der Datenbank zu übernehmen muss ich diese obj = ModelTable.objects.get(id=1)
dann das:
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)
Aber das gibt mir den Fehler
AttributeError: 'tuple' object has no attribute 'encode'
so ich versuchte .encode(´utf-8´)
für die Werte vorbei und gibt mir der gleiche Fehler, dann ändere den Wert für jede Variable und finde, dass das Problem von plain = (obj.plain,{'name':variableWithSomeValue,'email':otherVariable})
und html = (obj.html,{'name':variableWithSomeValue,'email':otherVariable})
kommt, also denke ich, dass ich die Variablen falsch übergebe, also Wie ca n mache ich es richtig? oder vielleicht ist für die Codierung der Datenbank, aber ich denke, dass mit .encode(utf-8)
sollte das Problem lösen, aber ich glaube wirklich, dass ich die Variablen name
und email
in die falsche Richtung übergeben.
Sorry für die lange Post und meine schlechte Grammatik, wenn mehr Informationen benötigen, lass es mich wissen.
Vielen Dank, das funktioniert perfekt –