python + django+ EmailMultiAlternatives Template'对象没有属性'encode

问题描述 投票:0回答:2

我通过以下方式发送电子邮件:

EmailMultiAlternatives() 

当调用send()方法时;我在某个基类中遇到错误。

lib/email/encoders.py
'Template' object has no attribute 'encode'

异常位置:C:\Python27\lib 邮件 ncoders.py,位于encode_7or8bit,第 73 行

Python 可执行文件:C:\Python27\python.exe

错误路径:

>   return msg.send(fail_silently)

C:\Python27\lib\email\mime\text.py in __init__
>  self.set_payload(_text, _charset)

C:\Python27\lib\email\message.py in set_payload
>   self.set_charset(charset)

C:\Python27\lib\email\message.py in set_charset
>  cte(self)

C:\Python27\lib\email\encoders.py in encode_7or8bit
>  orig.encode('ascii')

任何人都可以知道这个错误吗?

更新 使用以下代码帮助我解决了我的问题。

fail_silently=True

t = get_template(template_name)
html_part = t.render(context)
msg = EmailMultiAlternatives(subject,
                                 t,
                                 sender,
                                 recipients,
                                 bcc=bcc)
msg.attach_alternative(html_part, "text/html")

return msg.send(fail_silently)
python django email send
2个回答
0
投票

使用 django.template.loader 中的

get_template
方法时,出现以下错误

错误:“模板”对象的属性错误没有属性“分割线”

对我有用的解决方案

from django.template.loader import render_to_string


0
投票

Template对象不能直接在邮件中使用,需要配合上下文渲染,生成可以使用的字符串,例如:

context = Context(dict(some_key=some_value))
email = EmailMultiAlternatives(
  from_email="[email protected]",
  reply_to="[email protected]",
  subject="Example email subject"
  body=Template(template_body).render(context),
  to="[email protected]",
)
if html_email:
  html_body = Template(html_template).render(context)
  email.attach_alternative(html_body, "text/html")
email.send()
© www.soinside.com 2019 - 2024. All rights reserved.