0

メールを送信し、ほとんどのヘッダーを問題なく設定できます。

しかし、これはかなり長い間奇妙な結果をもたらしてきました。

これは私が現在いる場所です:

email = EmailMessage(
    'My foobar subject!!',
    render_to_string(
        'emails/new_foobar_email.txt',
        {
            'foo': foo.something,
            'bar': bar.something,
        }
    ),
    'notify@foobar.com',
    [the_user.email, ],
    headers={'From ': 'Darth Vader <darth@vader.com>'},
)
email.send(
    fail_silently=False
)

メールが届くと、「Darth Vader」ではなく「notify@foobar.com」からのものであると表示されます。

私はこのようにヘッダーを設定しようとしました:

# this way worked but was inconsistent. Some email clients showed it was from "unknown sender".
headers={'From ': 'Darth Vader'},

Internet Message Formats (RFC 2822)に関するこのドキュメントを調べてみましたが、ベスト プラクティスに従っているかどうかがはっきりしませんでした。

このSO Questionも見ましたが、 send_mail() 関数に適用されます。似ているかもしれませんが、違います。

メール クライアントが正しく表示されるかどうかは気にしていません (非常に多くの異なる方法を試し、間違った方法の 1 つをキャッシュした可能性があるため、問題が発生する可能性があります..) が、ベスト プラクティスに従うことには関心があります。そのため、ほとんどの電子メール クライアントで機能します。

質問

EmailMessage クラスを使用して電子メールに「From」ヘッダーを設定する適切な方法は何ですか? また、メール クライアントと最も互換性のある方法は何ですか?

4

2 に答える 2

1

from詳細を引数に直接入れることができます。

email = EmailMessage(
    'My foobar subject!!',
    body,
    'Darth Vader <notify@foobar.com>',
    [the_user.email])
于 2014-09-30T17:26:26.463 に答える
0
email = EmailMessage(
    'My foobar subject!!',
    render_to_string(
        'emails/new_foobar_email.txt',
        {
            'foo': foo.something,
            'bar': bar.something,
        }
    ),
    'darth@vader.com',
    [the_user.email, ],
    headers={'From': 'Darth Vader <darth@vader.com>'},
)
email.send(
    fail_silently=False
)

私が間違っていた重要なことは、「From」の後に末尾のスペースがあったことです。したがって、これは機能します。

でも。コードを簡素化し、@Daniel Roseman が提案したように実行し、from 引数に表示名を入れ、ヘッダーのキーワードを使用しません。

于 2014-09-30T17:31:30.637 に答える