システム Django/Celery/Redis をセットアップしました。そして、EmailMultiAlternatives を使用して、HTML とテキストの電子メールを送信しました。
リクエスト プロセスの一部として電子メールを送信すると、電子メールは HTML で送信されます。すべてがうまく動作し、関数をラップします。コードは次のとおりです。
def send_email(email, email_context={}, subject_template='', body_text_template='',
body_html_template='', from_email=settings.DEFAULT_FROM_EMAIL):
# render content
subject = render_to_string([subject_template], context).replace('\n', ' ')
body_text = render_to_string([body_text_template], context)
body_html = render_to_string([body_html_template], context)
# send email
email = EmailMultiAlternatives(subject, body_text, from_email, [email])
email.attach_alternative(body_html, 'text/html')
email.send()
ただし、以下のようにCelery Taskとして実行しようとすると、「text/plain」として送信されました。何が問題なのですか?または、詳細を確認するにはどうすればよいですか? ヒントや解決策は大歓迎です。
@task(name='tasks.email_features', ignore_result=True)
def email_features(user):
email.send_email(user.email,
email_context={'user': user},
subject_template='emails/features_subject.txt',
body_text_template='emails/features_body.txt',
body_html_template='emails/features_body.html')