2

いくつかのデータを含む単純な HTML ファイルをメールで送信したいと考えています。ユーザーがレンダリングされた HTML を受け取るようにします。私はこの解決策を試しました:

b = render_to_string('mail_body.html',{'name':request.POST['name']})
send_mail(email_subject,b,'sender@gmail.com', ['receiver@gmail.com'],
    fail_silently=False)

しかし、メール本文に HTML が表示されず、ユーザーはすべての HTML タグを見ることができます。

または、次のコードを使用すると、メール本文で HTML ファイルのパスを取得するだけです。

params = {}
params['name'] = request.POST['name']
context = Context(params)
t = Template('mail_body.html')
send_mail(email_subject,t.render(context), 'sender@gmail.com',
    ['receiver@gmail.com'], fail_silently=False)
4

2 に答える 2

2

次のようなことを試すことができます:

from django.core.mail import EmailMultiAlternatives
body = render_to_string(template_name, locals(),
                      context_instance=RequestContext(request))
email = EmailMultiAlternatives(subject, body, mail_sender, [contact_request.email], headers={'Reply-To': 'do_not_reply@whatever.com'})
email.content_subtype='html'
email.send(fail_silently=False)

これが正しい方向につながることを願っています。ここには、私自身のプログラミングに由来する多くの変数があることに注意してください。

于 2012-06-20T12:22:34.290 に答える
1

問題は、HTMLメールを送信していることをユーザーのメールクライアントに通知する必要があることです。そうしないと、HTMLがテキストであるかのように表示されます。

この設定はMIMEタイプと呼ばれます。これを設定する方法(およびPythonでHTMLメールを送信する方法)の詳細については、Pythonユーザーガイドを参照してください。

于 2012-06-20T12:15:57.117 に答える