Django E-Mail
-
03-07-2019 - |
Frage
Ich bin mit dem Google Mail SMTP-Server E-Mails von Nutzern von meiner Website zu senden.
Dies sind die Standardeinstellungen in meinem 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
Wenn ich ein Benutzer möchte eine E-Mail schicken, ich bin überschreiben diese Einstellungen und sendet die E-Mail Django E-Mail unter Verwendung von Sendemethoden. Wenn eine Ausnahme in dem System auftritt, erhalte ich eine E-Mail vom example@example.com. Manchmal erhalte ich eine E-Mail von einigen angemeldeten Benutzer. Welches auch möglicherweise könnte bedeuten, dass, wenn ein Benutzer erhält eine E-Mail von meiner Website gesendet hat eine gesendete Adresse unterscheidet sich von der tatsächlichen Benutzer.
Was sollte getan werden, diese Situation zu vermeiden?
Lösung
Django nur verwendet settings.DEFAULT_FROM_EMAIL , wenn eine der Mail-Funktionen Senden passiert None
oder leere Zeichenkette als Absenderadresse . Dies kann in django/core/mail.py
prüft werden.
Wenn es eine nicht behandelte Ausnahme Django die mail_admins()
Funktion in django/core/mail.py
ruft die immer verwendet settings.SERVER_EMAIL und nur an Adressen gesendet aufgelistet in settings.ADMINS . Dies kann auch in django/core/mail.py
prüft werden.
Der einzige andere Ort Django selbst E-Mails sendet, wenn settings.SEND_BROKEN_LINK_EMAILS True ist, dann wird CommonMiddleware Mail in settings.MANAGERS aufgelistet an alle Adressen senden und die E-Mail-Absender ist settings.SERVER_EMAIL .
Daher ist das einzig Mal, wenn ein normaler Benutzer E-Mail von Ihrer Website erhalten, wenn Sie send_mail()
nennen. Also, immer eine reale Adresse als from_mail
Argument übergeben und Sie werden Benutzer vermeiden Empfang E-Mail von settings.SERVER_EMAIL oder settings.DEFAULT_FROM_EMAIL .
Side Hinweis: django-Registrierung mindestens ein Beispiel eines Django steckbar ist, dass E-Mails von senden settings.DEFAULT_FROM_EMAIL so in Fällen wie diesem müssen Sie sicherstellen, dass es eine richtige E-Mail ist Adresse wie support@yoursite.com oder webmaster@yoursite.com.