django.core.mail.EmailMultiAlternativesを使用して、私のdjangoアプリケーションから電子メールを送信しようとしました。電子メールクライアントはHTMLをサポートしていません。 - 問題のないHTMLコンテンツを表示Win2003のOutlook 2003でのDjango EmailMultiAlternativesとHTML電子メールの表示
def send_email(self, from_address, to_list, subject, msg_text, msg_html):
subject=subject.replace('\r','').replace('\n',' ')
self.msg = EmailMultiAlternatives(subject, msg_text, from_address, to_list)
self.msg.attach_alternative(msg_html, "text/html")
self.msg.content_subtype = "html"
self.msg.send()
それはGmailやHotmailや他の多くの電子メールクライアントで素晴らしい作品:
は、ここに私のsend_email方法です。しかし、Win2003上で実行されているOutlook 2003ではHTMLコンテンツが表示されません。テキストバージョンのみです。
私は強制的にEmailMultiAlternativesでHTMLを入れた場合は、そのような_html instead of msg
_text、すなわち使用MSGを呼び出す:
self.msg = EmailMultiAlternatives(subject, msg_html, from_address, to_list)
が、それはすべてのクライアントで正しく動作します。これは、HTMLをサポートしていないクライアント、またはサポートを無効にしている(おそらく)クライアントのためのテキストフォールバックがないことを意味します。
Mac OS Xで動作しているdjangoアプリケーションで電子メールが生成されていることに言及する価値があると思います(OS間の行終端子の違いに関係します)。
私は people using other languagesは、Outlookと同様の問題があったことがわかり...
誰もが私のコードで適用することができる簡単な修正がある場合、見通しは異なる動作をしてしまうWHYの任意のアイデアを持っているのだろうか?
どちらもテストするOutlookはありませんが、努力するには+1してください! –
あなたの最初の本能は、私がcontent_subtypeを使いこなすべきではないということです。私の機能からそれを削除すると、Outlook 2003やその他の電子メールクライアントでもHTMLが正しくレンダリングされます。 私は、電子メールの送信に関するDjangoのドキュメントは、content_subtypeへの言及を削除するか、またはそれを使用する方法を明確にすることによって利益を得るかもしれないと思います。私は、Outlookが代替のコンテンツタイプを扱うことができると仮定しました。私はcontent_subtype = 'html'を使うべきです。明らかにそれは事実ではなく、私が達成しようとしていたことに反しています。サニティチェックに感謝します。 – cethegeek
'content_subtype =" iso-8859-1 "'を使用しないでください! MIMEタイプを 'text/iso-8859-1'に設定します。これは明らかにナンセンスです。実際のメッセージを含む' noname'という名前の添付ファイルが空になります。 – Timmmm