1

テンプレートを使用してメールを送信していますが、テンプレートが正しく表示されません。HTML タグを表示し、特殊文字をレンダリングしません。

コンテキストをレンダリングします。たとえば、「username」:some_name を指定すると、{{username}} を実行するとユーザー名が適切に表示されます。

my_template.html:

<p>hello &oslash;</p>

ビューで:

from django.core.mail import EmailMultiAlternatives
from django.template.loader import get_template
from django.template import Context

t = get_template('my_template.html')
msg = EmailMultiAlternatives("hi", t.render(Context({})), from_email, [user.email])
msg.send()

受信したメールは、p タグが表示された状態で表示されます。また、エンティティはテンプレートに記述されているとおりに表示されます。特別な文字をレンダリングする必要があることを除いて、.txt ファイルを使用するだけで問題ありません。txt ファイルに直接書き込むと、送信しようとするとエラーが発生します。

また、django の send_mail() を使用してみました。また、テンプレートに html タグを追加します。同じ結果です。

4

1 に答える 1

1

マルチパート/代替メールには2つのパートがあります。

  1. メールのプレーンテキストバージョン
  2. 電子メールのhtmlバージョン

したがって、ここでは#2を実行して、html部分を追加する必要があります。

ここの例に従って... https://docs.djangoproject.com/en/dev/topics/email/#sending-alternative-content-types ...おそらくmsgの前にこのような行を追加する必要があります.send() `

msg.attach_alternative(t.render(Context({})), "text/html")
于 2012-11-08T09:32:49.987 に答える