'InMemoryUploadedFile'对象没有属性'encode'

时间:2016-07-21 17:43:05

标签: python django

我正在尝试在Django中发送带附件的电子邮件。文件是request.FILE['file']对象(InMemoryUploadedFile类型)。我按EmailMessage(...)创建邮件,然后按message.attach(f.name, f.read(), f.content_type)附加文件。

发送电子邮件失败并显示错误消息: 'InMemoryUploadedFile' object has no attribute 'encode'

1 个答案:

答案 0 :(得分:0)

这在forms.py

中的表单定义中适用于我
from django.core.mail import EmailMultiAlternatives

email = EmailMultiAlternatives(
    subject='some subject',
    from_email='from_address@some_domain.com',
    to=['recipient1@another_domain.com'],
    body='some html content')
email.content_subtype = "html"
if hasattr(self.files, 'getlist'):
    files = self.files.getlist('document[]')
    for _file in files:
        _file.open()
        email.attach(_file.name, _file.read(), _file.content_type)
        _file.close()
email.send()

其中documents[]是输入html标记的名称:

<input name="document[]" id="file" type="file">