Python 带有unicode文件名的附加文件显示为;“noname”;

Python 带有unicode文件名的附加文件显示为;“noname”;,python,django,email,Python,Django,Email,我对包含unicode字符(主要是æ、ø和å)的附件有一个问题,它们在电子邮件中显示为“noname”。附加文件来自文件字段,因此它们是从系统附加的 以下是消息功能的一部分: msg = mail.EmailMessage() msg.subject = u"%s" % message.subject msg.from_email = "%s <%s>" % (message.author_name, message.author_email) msg.content_subtype

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

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

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)
msg=mail.EmailMessage()
msg.subject=u“%s”%message.subject
msg.from_email=“%s”%(message.author_名称,message.author_email)
msg.content\u subtype=“html”
msg.body=render_to_string(“core/send_message_all.html”,locals())
message_to=re.split(“,|,”,message.receiver)
如果message.file1:
msg.attach_文件(message.file1.file.path)
msg.send(失败=False)

我正在使用Django 1.4.5。有人知道我怎么解决这个问题吗?我曾考虑过在上传时对文件名进行缓冲,但随后我还必须对现有文件进行缓冲。

我最终采用了另一种方法。我使用了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”的原因是因为它是一个外键

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