【问题标题】:Error passing Tuple as 'To' param in Django EmailMessage在 Django EmailMessage 中将元组作为“To”参数传递时出错
【发布时间】:2011-06-18 18:19:14
【问题描述】:

我在尝试发送电子邮件时收到以下错误,其中我为“收件人”参数提供了一个电子邮件地址元组。

> TypeError: sequence item 0: expected
> string, tuple found

我查看了EmailMessage class 的 Django 文档,它表明这应该没问题。有人对可能出现的问题有任何建议吗?

我这样构造 EmailMessage 对象:

spam = EmailMessage("Some title - %s \"%s\"" % (subject, task.name), message,
                                "%s <%s>" % (user.get_full_name(), user.email), settings.MAIL_LIST)
spam.content_subtype = "html"
spam.send()

settings.MAIL_LIST = ["foo@bar.com", "foo2@bar.com", "foo3@bar.com"]

部分堆栈跟踪:

> File "/myClass/Mail.py", line 217, in
> contact_owner
>     spam.send()
> 
>   File
> "/port/python-environments/port_web/lib/python2.6/site-packages/django/core/mail.py",
> line 281, in send
>     return self.get_connection(fail_silently).send_messages([self])
> 
>   File
> "/port/python-environments/port_web/lib/python2.6/site-packages/django/core/mail.py",
> line 185, in send_messages
>     sent = self._send(message)
> 
>   File
> "/port/python-environments/port_web/lib/python2.6/site-packages/django/core/mail.py",
> line 199, in _send
>     email_message.message().as_string())
> 
>   File
> "/port/python-environments/port_web/lib/python2.6/site-packages/django/core/mail.py",
> line 253, in message
>     msg['To'] = ', '.join(self.to)
> 
> TypeError: sequence item 0: expected
> string, tuple found

【问题讨论】:

  • settings.MAIL_LIST 的最后一个元素应该是:"foo3@bar.com"。你错过了"
  • 谢谢。修复有问题。在实际代码中不是问题。
  • 错误很明显。 self.to 是一个元组。你能粘贴print self.to的输出吗?
  • @AA:这是不正确的。 self.to 的第一个元素是一个元组。 @Andrew:settings.MAIL_LIST 定义后有逗号吗?
  • 不,我在 MAIL_LIST 定义之后没有逗号。我应该吗?

标签: python django email typeerror


【解决方案1】:

发送 HTML 电子邮件示例

from django.core.mail import EmailMultiAlternatives
from django.utils.html import strip_tags

subject = render_to_string('cart/email/order_subject.txt',c)
html_body = t.render(Context(c))
text_body = strip_tags(html_body)

msg = EmailMultiAlternatives(subject, text_body, None, sc.settings['email_order'].split(','))
msg.attach_alternative(html_body, "text/html")
msg.send()

【讨论】:

    【解决方案2】:

    这最终成为一个非问题,因为我上面的信息实际上是不正确的。我的错误几乎就是错误消息所描述的。我正在将字符串电子邮件地址列表传递给需要元组列表的代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-14
      • 2019-03-11
      • 1970-01-01
      • 2014-06-21
      相关资源
      最近更新 更多