私のDjangoアプリはHTML形式でメールを送信する必要があります。公式文書によると:
電子メールにコンテンツの複数のバージョンを含めると便利な場合があります。典型的な例は、メッセージのテキストバージョンとHTMLバージョンの両方を送信することです。Djangoのメールライブラリでは、EmailMultiAlternativesクラスを使用してこれを行うことができます。EmailMessageのこのサブクラスには、電子メールにメッセージ本文の追加バージョンを含めるためのattach_alternative()メソッドがあります。他のすべてのメソッド(クラスの初期化を含む)は、EmailMessageから直接継承されます。
...私は次のコードを思いついた:
from django.core.mail import EmailMultiAlternatives
msg = EmailMultiAlternatives()
msg.sender = "someone@somewhere.com"
msg.subject = subject
msg.to = [target,]
msg.attach_alternative(content, "text/html")
msg.send()
これは期待どおりに機能します。ただし、状況によっては、PDF添付ファイルを含める必要があります。そのために、直前に次のコードを追加しましたmsg.send()
。
if attachments is not None:
for attachment in attachments:
content = open(attachment.path, 'rb')
msg.attach(attachment.name,content.read(),'application/pdf')
これは機能しますが(すべてのPDFドキュメントが電子メールに適切に添付されます)、望ましくない副作用として、電子メールのHTMLコンテンツが消え、PDF文書が添付された空の電子メール本文が残ります。
私はここで何が間違っているのですか?