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を使用しています。これを修正する方法を知っている人はいますか?アップロード時にファイル名をスラッグ化することを考えましたが、既存のファイルもスラッグ化する必要があります。

4

1 に答える 1

0

私は別のアプローチに行き着きました。attach_file() の代わりに attach() を使用し、添付ファイルのみのファイル名を変更しました。

ドキュメント モデル:

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だからです

ご不便おかけしてすみません :-)

于 2013-02-26T14:32:30.607 に答える