12

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

これらは私の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 サイトから送信された電子メールを受信したときに、実際のユーザーとは異なる送信アドレスを持っていることを意味する可能性もあります。

このような状況を避けるために何をすべきですか?

4

1 に答える 1

23

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

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

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

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

補足: django-registration は、settings.DEFAULT_FROM_EMAILからメールを送信する Django プラガブルの少なくとも 1 つの例であるため、このような場合は、support@yoursite.com や webmaster などの適切な電子メール アドレスであることを確認する必要があります。 @yoursite.com。

于 2009-03-03T21:15:14.893 に答える