我的附件包含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。有谁知道我怎么解决这个问题?我已经考虑过上传文件名,但后来我还要对现有文件进行重击。
答案 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
很抱歉给您带来不便: - )