質問

Gmail SMTPサーバーを使用して、ウェブサイトのユーザーからメールを送信しています。

これらは私のsettings.pyのデフォルト設定です

EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'example@example.com'
EMAIL_HOST_PASSWORD = 'pwd'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
SERVER_EMAIL = EMAIL_HOST_USER
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER

ユーザーにメールを送信する場合、これらの設定をオーバーライドし、Djangoのメール送信方法を使用してメールを送信します。システムで例外が発生すると、example @ example.comから電子メールを受け取ります。ログインしているユーザーからメールを受け取ることがあります。これは、ユーザーが私のWebサイトから送信された電子メールを受信したときに、実際のユーザーとは異なる送信アドレスを持つことを意味する可能性もあります。

この状況を回避するにはどうすればよいですか?

役に立ちましたか?

解決

Djangoは、メール送信機能のいずれかが None または空の文字列を送信者アドレスとして渡す場合にのみ settings.DEFAULT_FROM_EMAIL を使用します。これは django / core / mail.py で確認できます。

未処理の例外がある場合、Djangoは常に settings.SERVER_EMAIL を使用する django / core / mail.py mail_admins()関数を呼び出します>および settings.ADMINS にリストされているアドレスに送信されるのはのみです。これは django / core / mail.py でも確認できます。

Django自体が電子メールを送信する他の唯一の場所は、 settings.SEND_BROKEN_LINK_EMAILS がTrueの場合で、CommonMiddlewareは settings.MANAGERS にリストされているすべてのアドレスにメールを送信します電子メールの送信者は settings.SERVER_EMAIL です。

したがって、通常のユーザーがサイトから電子メールを受信するのは、 send_mail()を呼び出すときだけです。したがって、常に実際のアドレスを from_mail 引数として渡すと、ユーザーが settings.SERVER_EMAIL または settings.DEFAULT_FROM_EMAIL からメールを受信することを回避できます。

サイドノート:django-registrationは、 settings.DEFAULT_FROM_EMAIL からメールを送信するDjangoプラグインの少なくとも1つの例です。したがって、このような場合は適切なメールであることを確認する必要がありますsupport@yoursite.comやwebmaster@yoursite.comなどのアドレス。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top