带有unicode文件名的Attach_file显示为“noname”

时间:2013-02-26 13:11:41

标签: python django email

我的附件包含unicode字符(主要是æ,ø和å)在电子邮件中显示为“noname”的问题。附件来自FileFields,因此它们是从系统附加的。

以下是消息功能的一部分:

msg = mail.EmailMessage()
msg.subject = u"%s" % message.subject
msg.from_email = "%s <%s>" % (message.author_name, message.author_email)
msg.content_subtype = "html"
msg.body = render_to_string("core/send_message_all.html", locals())
message_to = re.split(", |,", message.receiver)
if message.file1:
    msg.attach_file(message.file1.file.path)
msg.send(fail_silently=False)

我正在使用Django 1.4.5。有谁知道我怎么解决这个问题?我已经考虑过上传文件名,但后来我还要对现有文件进行重击。

1 个答案:

答案 0 :(得分:0)

我最后采用了另一种方法。我使用attach()而不是attach_file()并仅更改附件上的文件名。

在文档模型中:

def filename(self):
    return unicodedata.normalize('NFKD', os.path.basename(self.file.name)).encode('ascii','ignore')

在views.py中:

file_1 = open(message.file1.file.path)
msg.attach(message.file1.filename(), file_1.read(), message.file1.content_type)

“message.file1”的原因是因为它是一个ForeignKey

很抱歉给您带来不便: - )