0

我对包含 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。有谁知道我该如何解决这个问题?我曾考虑过在上传时对文件名进行 slugify,但随后我还必须对现有文件进行 slugify。

4

1 回答 1

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”的原因是因为它是一个外键

带来不便敬请谅解 :-)

于 2013-02-26T14:32:30.607 回答