In meinem habe settings.py
ich folgendes:
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
# Host for sending e-mail.
EMAIL_HOST = 'localhost'
# Port for sending e-mail.
EMAIL_PORT = 1025
# Optional SMTP authentication information for EMAIL_HOST.
EMAIL_HOST_USER = ''
EMAIL_HOST_PASSWORD = ''
EMAIL_USE_TLS = False
Mein E-Mail-Code:
from django.core.mail import EmailMessage
email = EmailMessage('Hello', 'World', to=['[email protected]'])
email.send()
Wenn ich einen Debugging-Server über einrichte python -m smtpd -n -c DebuggingServer localhost:1025
, kann ich die E-Mail natürlich in meinem Terminal sehen.
Wie sende ich die E-Mail jedoch nicht an den Debugging-Server, sondern an [email protected]?
Lassen Sie mich nach dem Lesen Ihrer Antworten etwas klarstellen:
Können Sie localhost (einfacher Ubuntu-PC) nicht zum Senden von E-Mails verwenden?
Ich dachte in Django 1.3
send_mail()
ist etwas veraltet undEmailMessage.send()
wird stattdessen verwendet?
Antworten:
Senden Sie die E-Mail an einen echten SMTP-Server. Wenn Sie keine eigenen einrichten möchten, können Sie Unternehmen finden, die eine für Sie betreiben, z. B. Google selbst.
quelle
Ich verwende Google Mail als meinen SMTP-Server für Django. Viel einfacher als mit Postfix oder einem anderen Server umzugehen. Ich beschäftige mich nicht mit der Verwaltung von E-Mail-Servern.
In settings.py:
HINWEIS : In 2016 lässt Google Mail dies standardmäßig nicht mehr zu. Sie können entweder einen externen Dienst wie Sendgrid verwenden oder diesem Tutorial von Google folgen, um die Sicherheit zu verringern. Lassen Sie jedoch diese Option zu: https://support.google.com/accounts/answer/6010255
quelle
django-admin.py startproject gmail
Bearbeiten Sie settings.py mit dem folgenden Code:
Interaktiven Modus ausführen:
python manage.py shell
Importieren Sie das EmailMessage-Modul:
Senden Sie die E-Mail:
Für weitere Informationen, die Prüfung
send_mail
undEmailMessage
Funktionen in Dokumenten .UPDATE für Google Mail
Auch wenn Sie Probleme beim Senden von E-Mails über Google Mail haben, lesen Sie diese Anleitungen von Google.
Gehen Sie in Ihren Google-Kontoeinstellungen zu
Security > Account permissions > Access for less secure apps
und aktivieren Sie diese Option.Auch eine App spezifisches Passwort für Ihre Google Mail erstellen , nachdem Sie haben eingeschaltet 2-Schritt-Prüfung für sie.
Dann sollten Sie in den Einstellungen ein app-spezifisches Passwort verwenden. Ändern Sie also die folgende Zeile:
Wenn Sie HTML-E-Mails senden möchten, lesen Sie dies auch .
quelle
Meine Website wird auf gehostet
Godaddy
und ich habe eine private E-Mail-Adresse registriert. Dies sind die Einstellungen, die für mich funktioniert haben:In settings.py:
In der Schale:
Dann bekam ich "1" als O / P dh Erfolg. Und ich habe die Post auch erhalten. :) :)
quelle
Wenn für Django Version 1.7 die oben genannten Lösungen nicht funktionieren, versuchen Sie Folgendes
in settings.py hinzufügen
Die letzte Zeile hat den Trick für Django 1.7 gemacht
quelle
Sie müssen SMTP als Backend in settings.py verwenden
Wenn Sie das Backend als Konsole verwenden, erhalten Sie eine Ausgabe in der Konsole
Und auch unter Einstellungen zusätzlich
Wenn Sie mit gmail hierfür Setup 2-Stufen - Verifikation und spezifisches Passwort Anwendung und kopieren und das Passwortes einfügen in über EMAIL_HOST_PASSWORD Wert.
quelle
Ich fand, dass die Verwendung von SendGrid der einfachste Weg ist, das Senden von E-Mails mit Django einzurichten. So funktioniert das:
settings.py
:EMAIL_HOST = 'smtp.sendgrid.net' EMAIL_HOST_USER = '<your sendgrid username>' EMAIL_HOST_PASSWORD = '<your sendgrid password>' EMAIL_PORT = 587 EMAIL_USE_TLS = True
Und du bist fertig!
So senden Sie eine E-Mail:
Wenn Sie möchten, dass Django Ihnen eine E-Mail sendet, wenn ein interner Serverfehler von 500 auftritt, fügen Sie Folgendes hinzu
settings.py
:Das Senden von E-Mails mit SendGrid ist bis zu 12.000 E-Mails pro Monat kostenlos.
quelle
Ich hatte das tatsächlich vor einiger Zeit von Django aus gemacht. Eröffnen Sie ein legitimes GMail-Konto und geben Sie hier die Anmeldeinformationen ein. Hier ist mein Code -
quelle
smtplib
direkt zu verwenden ; Django wird diesen Teil für Sie erledigen.send_mail
Funktion vollständig und benutze meine eigene ...send_mail()
so würdest du es machen. Sie müssen die Nachricht immer noch selbst zusammenstellen, müssen sich jedoch nicht um die SMTP-Bits kümmern.Spät, aber:
Zusätzlich zu dem von
DEFAULT_FROM_EMAIL
anderen erwähnten Fix und dem Zugriff weniger sicherer Apps auf das Konto musste ich zu https://accounts.google.com/DisplayUnlockCaptcha navigieren, während ich als fragliches Konto angemeldet war, damit Django sich endgültig authentifiziert .Ich ging über einen SSH-Tunnel zum Webserver zu dieser URL, um sicherzustellen, dass die IP-Adresse dieselbe war. Ich bin mir nicht ganz sicher, ob das notwendig ist, aber es kann nicht schaden. Sie können dies folgendermaßen tun:
ssh -D 8080 -fN <username>@<host>
Stellen Sie dann Ihren Webbrowser so ein, dass erlocalhost:8080
als SOCKS-Proxy verwendet wird.quelle
Sie können das "Test Mail Server Tool" verwenden , um das Senden von E-Mails auf Ihrem Computer oder localhost zu testen. Google und Download "Test Mail Server Tool" und richten Sie es ein.
Dann in Ihrer settings.py:
Aus der Schale:
quelle
Für SendGrid - Django Speziell:
SendGrid Django Docs hier
Setzen Sie diese Variablen in
settings.py
in views.py
quelle