Heim > Technologie-Peripheriegeräte > IT Industrie > So senden Sie E -Mail mit Django mit SMTP -Server

So senden Sie E -Mail mit Django mit SMTP -Server

尊渡假赌尊渡假赌尊渡假赌
Freigeben: 2025-02-08 10:58:10
Original
532 Leute haben es durchsucht

So senden Sie E -Mail mit Django mit SMTP -Server

Haben Sie jemals Probleme mit der Einrichtung einer E -Mail -Integration in Ihre Django -Projekte gekämpft? Unabhängig davon, ob es sich

In diesem Tutorial werden wir mithilfe von Django mit praktischen, Schritt-für-Schritt-Anweisungen E-Mails senden. Wir werden behandelt, wie Sie Django SMTP -Verbindungen konfigurieren, ein Passwort für Ihren E -Mail -Anbieter einrichten und wie Sie E -Mails über die Django -Shell senden. Wir werden uns auch ansehen, wie Sie ein Kontaktformular für Ihre Django -App einrichten, mit der Ihre Kunden Sie kontaktieren können.

Key Takeaways

    SMTP -Einstellungen konfigurieren: Senden Sie Django -E -Mail -Senden durch Konfigurieren der Datei "Einstellungen".
  • sichere Anmeldeinformationen mit Django Environ: Verwenden Sie die Django -Umgebung, um sensible Anmeldeinformationen wie E -Mail_Host_user und E -Mail_Host_Password über Umgebungsvariablen sicher zu verwalten, wodurch die härtliche Kodierung von Anmeldeinformationen im Quellcode verhindern wird.
  • app-spezifische Kennwörter generieren: Aktivieren Sie bei der Verwendung von Google Mail die 2-stufige Überprüfung und erstellen Sie ein App-Kennwort, um das Senden von Django-Mails sicher zu authentifizieren, anstatt sich auf Ihr primäres Kennwort zu verlassen.
  • Senden Sie E-Mails mit send_mail: Verwenden Sie die integrierte Send_mail-Funktion von Django, um E-Mails mit Django aus der Django-Shell, Ansichten oder wiederverwendbaren Helferfunktionen zu senden, wobei Einstellungen für die optimierte Konfiguration verwendet werden.
  • Automatisierte Kontaktformulare implementieren: Erstellen Sie ein automatisiertes Kontaktformular mit Django-Formularen und integrieren Sie die Funktionen von E-Mail-Sendungen für die nahtlose Behandlung von Benutzeranfragen.
  • E-Mail-Funktionalität Test: Überprüfen Sie die E-Mail-Sendungslogik mit Unit-Tests und verwenden Sie Tools wie MailHog oder Konsolen-E-Mail-Backend für sichere Entwicklungstests.
  • Best Practices folgen: Stellen Sie sicher, dass eine sichere und effiziente E -Mail -Zustellung unter Verwendung der TLS -Verschlüsselung, der ordnungsgemäßen Authentifizierung und modularen E -Mail -Funktionen zur Wiederverwendbarkeit verwendet wird.
  • Die meisten Webanwendungen verwenden E -Mails, um wichtige Vorgänge zu verwalten, z. B. das Zurücksetzen von Kennwörtern, die Kontoaktivierung, das Empfangen von Kundenfeedback, das Senden von Newslettern und Marketingkampagnen. Während Google Mail für Tests oder kleine Projekte arbeitet, sollten Produktionswebsites dedizierte E -Mail -Dienste wie AWS SES, SENDGRID oder Mailgun verwenden.

Wenn Sie jedoch die Kosten und die Bemühungen der Verwendung eines dedizierten E -Mail -Dienstes vergleichen, kann das Senden von E -Mails mit Ihrer persönlichen E -Mail für kleine oder Testprojekte angemessener sein. Wir werden diesen Ansatz hier verfolgen, um die Dinge einfach zu halten.

Hinweis

: Es ist keine gute Idee, Ihren persönlichen E -Mail -Service für Ihre Produktionswebsite zu verwenden. Sie können mehr über Google Mail -Senden von Beschränkungen erfahren oder sich auf die Einschränkungen Ihres E -Mail -Anbieters beziehen.

Hinweis: Der vollständige Code für dieses Tutorial ist auf GitHub verfügbar.

Verständnis des SMTP -Servers und des einfachen E -Mail -Transfer -Protokolls

SMTP (oder das einfache Mail -Transfer -Protokoll) ist eine Reihe von Regeln, um festzustellen, wie E -Mails von Absendern an Empfänger übertragen werden. SMTP -Server verwenden dieses Protokoll, um ausgehende E -Mails zu senden und weiterzugeben. (Beachten Sie, dass andere Protokolle bestimmen, wie E -Mails

erhalten werden.)

Ein SMTP -Server verfügt immer über eine eindeutige Adresse und einen bestimmten Port zum Senden von Nachrichten. In den meisten Fällen ist 587. Wir werden sehen, wie der Port in Django -E -Mail -Senden relevant ist.

Für dieses Beispiel werden wir den SMTP -Server von Google Mail verwenden, wobei:
  • Adresse: SMTP.gmail.com
  • Port: 587

Lassen Sie uns nun sehen, wie wir E -Mails mit Django senden können.

Erstellen eines Django -Projekts

Jedes Django -Projekt sollte eine virtuelle Umgebung haben, da wir die Projektabhängigkeiten nicht durcheinander bringen möchten. Um eine zu erstellen, führen Sie Folgendes aus:
python <span>-m venv .venv</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Hinweis: Wenn Sie mit virtuellen Umgebungen nicht vertraut sind, überprüfen Sie unsere Python Virtual Environments Guide .

Der obige Befehl erstellt eine virtuelle Umgebung mit dem Namen .venv. Um diese virtuelle Umgebung zu aktivieren, können Sie Folgendes verwenden:
<span># CMD
</span>.venv<span>\Scripts\activate
</span>
<span># Power Shell
</span>.venv<span>\Scripts\Activate.ps1
</span>
<span># WSL
</span><span>source .venv/bin/activate</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Da Django ein Paket von Drittanbietern ist, müssen Sie es mit PIP installieren:
pip <span>install django</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Dies wird die neueste Version von Django installiert, die Sie bei Pip Freeze überprüfen können.

Um ein Django-Projekt zu erstellen, rufen Sie das Befehlszeilen-Dienstprogramm django-admin an:
django-admin startproject EmailProject
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Mit dem obigen Befehl erstellen Sie ein Django -Projekt mit dem Namen EmailProject, aber Sie können das Projekt mit jedem gewünschten Namen erstellen. Geben Sie nun in das Projektverzeichnis ein und führen Sie den Server aus:
<span>cd EmailProject
</span>python manage.py runserver
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
So senden Sie E -Mail mit Django mit SMTP -Server

Besuchen Sie nach dem Ausführen des Django -Servers http: // localhost: 8000 in Ihrem Browser. Sie sehen eine automatisch generierte Seite mit den neuesten Django-Versionsnotizen.
So senden Sie E -Mail mit Django mit SMTP -Server

Django -E -Mail -Backend für SMTP

konfigurieren

Das E -Mail -Backend ist der Mechanismus, um E -Mails mit Django zu senden. Standardmäßig verwendet Django django.core.mail.backends.smtp.emailbackend, sodass eine Verbindung zu einem SMTP -Server hergestellt und E -Mails gesendet werden können. Abhängig von der Umgebung (Entwicklung oder Produktion) können Sie ein anderes E -Mail -Backend für Ihren Anforderungen auswählen.

Sie müssen die Einstellungsdatei vor dem Senden von E -Mails ändern. Suchen wir diese Datei also mit dem folgenden Befehl:

Hinweis: Der Einfachheit halber verwenden wir nur Unix -Systembefehle (macOS oder Linux).
python <span>-m venv .venv</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Der Baumbefehl gibt die Dateistruktur eines Verzeichnisses aus. In diesem Fall erhalten wir, da wir ihm keinen bestimmten Verzeichnispfad geben, etwas Ähnliches wie das Folgende, wenn wir uns im Stammordner des Projekts befinden:

<span># CMD
</span>.venv<span>\Scripts\activate
</span>
<span># Power Shell
</span>.venv<span>\Scripts\Activate.ps1
</span>
<span># WSL
</span><span>source .venv/bin/activate</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Die Datei, die wir ständig durch dieses Tutorial ändern, sind die Einstellungen.Py im Ordner E -MailProject. Es enthält die gesamte Projektkonfiguration, die Sie benötigen, und können benutzerdefinierte Variablen festlegen. Wie die Django-Dokumente sagen: „Eine Einstellungsdatei ist nur ein Python-Modul mit Variablen auf Modulebene“.

Schauen wir uns die Einstellungen an, die für das Senden einer E -Mail mit Django erforderlich sind. Öffnen Sie die Datei von EmailProject/Settings.py und fügen Sie die folgenden Einstellungen unten in der Datei ein:

pip <span>install django</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Lassen Sie uns den obigen Code aufschlüsseln, indem Sie jede dieser Einstellungen analysieren.

E -Mail -Backend

Die Einstellung von Email_backend deklariert das Backend In unserem Django -Projekt wird eine Verbindung zum SMTP -Server hergestellt.

Diese Variable zeigt auf die SMTP.Emailbackend -Klasse, die alle Parameter empfängt, die zum Senden einer E -Mail erforderlich sind. Ich empfehle dringend, dass Sie sich den Klassenkonstruktor direkt im Django -Quellcode ansehen. Sie werden überrascht sein, wie lesbar dieser Code ist.

Hinweis: Obwohl diese Klasse der Standard -E -Mail -Backend ist, gilt es als gute Praxis, in den Django -Einstellungen explizit zu sein.

Alle anderen E -Mail -Einstellungen basieren auf dem Konstruktor dieser E -Mail -Backend -Klasse.

E -Mail -Host

Die Einstellung von Email_host bezieht sich auf die SMTP -Serverdomäne, die Sie verwenden. Dies hängt von Ihrem E -Mail -Anbieter ab. Im Folgenden finden Sie eine Tabelle mit dem SMTP -Server -Host, der drei gemeinsamen Anbietern entspricht:

E-Mail-Anbieter SMTP Server Host gmailsmtp.gmail.comoutlook/hotmailsmtp-mail.outlook.comyahoosmtp.mail.yahoo.com

lassen wir diese Einstellung vorerst leer, da wir später eine .EnV-Datei verwenden, um hartcodierte sensible Schlüssel oder Konfigurationen pro Standort zu vermeiden. Sie sollten niemals Anmeldeinformationen direkt in den Code einstellen. Wir werden Django Environ verwenden, um dieses Problem zu lösen.

E -Mail -Port

Die Einstellung von Email_port muss auf 587 festgelegt werden, da es sich um den Standardport für die meisten SMTP -Server handelt. Dies gilt für persönliche E -Mail -Anbieter. Dieser Port wird zusammen mit der TLS -Verschlüsselung verwendet, um die Sicherheit des E -Mail -Sendens zu gewährleisten.

E -Mail Verwenden Sie TLS

Transport Layer Security (TLS) ist ein Sicherheitsprotokoll, das im Internet verwendet wird, um die Kommunikation zwischen Web -Apps (DJango) und Servern (SMTP -Server) zu verschlüsseln.

Ursprünglich haben wir die Variable E -Mail_USE_TLS auf true gesetzt. Dies bedeutet, dass Django die Transport Layer Security verwendet, um eine Verbindung zum SMTP -Server herzustellen und E -Mails zu senden. (Für persönliche E -Mail -Anbieter ist es obligatorisch.)

E -Mail -Host -Benutzer

Die Einstellung von E -Mail_host_user ist Ihre persönliche E -Mail -Adresse. Lassen Sie es vorerst leer, da wir Django-Eniron verwenden, um all diese Anmeldeinformationen einzurichten.

E -Mail -Host -Passwort

Die Einstellung von E -Mail_host_password ist das App -Kennwort, das Sie aus Ihrem E -Mail -Konto erhalten - der Vorgang, den wir direkt nach diesem Abschnitt durchführen. Gleiche Geschichte: Lassen Sie diese Einstellung leer, da wir später Umgebungsvariablen verwenden.

Für andere Anbieter können Sie die Einstellungen entsprechend anpassen. Zum Beispiel:

Outlook -Konfiguration:

python <span>-m venv .venv</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Yahoo -Konfiguration:

<span># CMD
</span>.venv<span>\Scripts\activate
</span>
<span># Power Shell
</span>.venv<span>\Scripts\Activate.ps1
</span>
<span># WSL
</span><span>source .venv/bin/activate</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Einrichten von Google Mail SMTP -Server mit App -Kennwort

Da "weniger sichere Apps" von Google veraltet sind, besteht die ordnungsgemäße und sichere Möglichkeit, eine Verbindung zum Google Mail -Konto für das Senden von E -Mails herzustellen, die Verwendung von App -Passwörtern. App-Passwörter sind nur verfügbar, wenn Sie eine 2-Schritt-Überprüfung für Ihr Google-Konto aktivieren.

Warum Appkennwörter verwenden?

  1. sichere Alternative: Anstatt Ihr primäres Kennwort zu teilen, bieten App -Kennwörter für bestimmte Anwendungen eingeschränkter Zugriff.
  2. funktioniert mit SMTP: App -Passwörter entsprechen den Sicherheitsanforderungen von Google Mail für SMTP -Zugriff.
  3. obligatorisch für die 2-stufige Überprüfung: Sobald die 2-stufige Überprüfung aktiviert ist, können Appkennwörter die einzige Möglichkeit haben, externe Apps eine Verbindung herzustellen.

Schritt 1: 2-Schritt-Überprüfung

aktivieren
  1. Gehen Sie zu Ihrem Google -Konto: https://myaccount.google.com/.
  2. Navigieren Sie im Menü links zur Sicherheit.
  3. scrollen Sie zum Abschnitt "Wie Sie sich bei Google anmelden".
  4. Klicken Sie auf "2-Schritt-Überprüfung" und befolgen Sie die Anweisungen auf dem Bildschirm:
    • Verwenden Sie Ihre Telefonnummer oder eine Authenticator-App, um eine 2-stufige Überprüfung einzurichten.
    • Überprüfen Sie Ihr Setup mit dem an Ihr Gerät gesendeten Code.
So senden Sie E -Mail mit Django mit SMTP -Server

Schritt 2: Generieren Sie ein App -Passwort

  1. Sob
  2. Geben Sie dort den Namen für das App -Passwort ein und klicken Sie auf Erstellen.
So senden Sie E -Mail mit Django mit SMTP -Server
    Dann gibt es ein Pop-up-Modal mit einem 16-Charakter-App-Passwort. Stellen Sie sicher, dass Sie es irgendwo speichern, da es nur einmal angezeigt wird.
So senden Sie E -Mail mit Django mit SMTP -Server
Wenn Sie andere E -Mail -Anbieter verwenden, lesen Sie die folgenden Anleitungen:

  • Yahoo App Passwort
  • Outlook oder Hotmail App Passwort

Verwenden von Django Environ, um E -Mail -Backend -Anmeldeinformationen zu sichern

Auch wenn Sie nur E -Mails in der Entwicklung senden, sollten Sie keine Passwörter direkt in den Quellcode schreiben. Dies wird noch wichtiger, wenn ein Versionskontrollsystem zusammen mit GitHub verwendet wird, um Ihr Projekt zu hosten. Sie möchten nicht, dass Personen auf Ihre Daten zugreifen.

Lassen Sie uns sehen, wie wir dies verhindern können, indem wir Django-Eniron verwenden.

Erstellen einer .Env -Datei im Verzeichnis von EmailProject (wobei die Datei Einstellungen.Py -Datei befindet) mit dem folgenden Befehl:

python <span>-m venv .venv</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Öffnen Sie nun diese .Env -Datei und geben Sie die folgenden Schlüssel -Wert -Paare ein:

<span># CMD
</span>.venv<span>\Scripts\activate
</span>
<span># Power Shell
</span>.venv<span>\Scripts\Activate.ps1
</span>
<span># WSL
</span><span>source .venv/bin/activate</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

den Inhalt dieser Datei aufschlüsseln:

  • E -Mail_host: Die SMTP -Serveradresse Ihres E -Mail -Anbieters. In der obigen E -Mail -Hosttabelle finden Sie eine schnelle Anleitung. In diesem Fall verwende ich SMTP.gmail.com, die Google Mail SMTP -Adresse.
  • E -Mail_HOST_USER: Ihre E -Mail -Adresse.
  • E -Mail_HOST_PASSWORD: Das gerade generierte App -Passwort. Denken Sie daran, dass es keine Räume enthält.
  • recicent_address: Die E -Mail -Adresse, in der Sie die Nachrichten erhalten. Dies ist eine benutzerdefinierte Einstellung, die wir später erstellen, um alle E -Mails an denselben Empfänger zu senden.

Um diese Umgebungsvariablen zu nutzen, müssen wir Django-Eniron installieren:

pip <span>install django</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Hinweis: Stellen Sie sicher, dass Ihre virtuelle Umgebung aktiviert ist.

Öffnen Sie nun die Einstellungen.

django-admin startproject EmailProject
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Erstens importieren wir das Environ -Paket oben in der Einstellungsdatei. Denken Sie daran, dass alle Importe am Anfang sein sollten. Anschließend erstellen wir eine Env -Variable, die alle Schlüssel -Wert -Paare enthalten, die auf dem .Env.

verfügbar sind

Die Anweisung Env ("Schlüssel") bedeutet, dass wir den Wert dieses Schlüssels nachschlagen. Stellen Sie vor dem Fahren sicher, dass Sie Ihre .Env -Datei eingerichtet haben. Andernfalls erhalten Sie, wenn eine Umgebungsvariable nicht festgelegt ist

Hinweis: recicent_address ist eine benutzerdefinierte Einstellung, mit der wir E -Mails an eine Adresse senden können, auf die wir zugreifen können.

Vergessen Sie nicht, die .Env -Datei in Ihr .gitignore aufzunehmen, wenn Sie Git und GitHub verwenden. Sie können dies einfach tun, indem Sie es öffnen und die folgende Zeile hinzufügen:

1. Senden von E -Mails mit der Django Shell
<span>cd EmailProject
</span>python manage.py runserver
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Endlich kommen wir zum saftigen Teil des Artikels! Es ist Zeit, Ihre erste E -Mail an Django zu senden.

Öffnen Sie ein Terminal, aktivieren Sie die virtuelle Umgebung und führen Sie:

aus.

Erstellt eine Shell mit allen für uns bereits konfigurierten Django -Einstellungen. Fügen Sie in dieser brandneuen Shell den folgenden Code ein:
tree
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Wir können auch einen Einzeiler machen, ohne die Argumente anzugeben:
├── EmailProject
│   ├── asgi.py
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── manage.py

1 directory, 6 files
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
python <span>-m venv .venv</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Lassen Sie uns den obigen Code aufschlüsseln:

  • Wir importieren die Django send_mail -Funktion.
  • Dann importieren wir das Einstellungsobjekt, das alle globalen Einstellungen und die Einstellungen pro Standort enthält (die in der Einstellungsdatei.Py-Datei).
  • Schließlich übergeben wir alle benötigten Argumente an die Funktion "send_mail". Diese Funktion gibt die Anzahl der gesendeten E -Mails zurück, in diesem Fall 1.

Beachten Sie, wie wir das Einstellungsobjekt verwenden, um die von _email (die E -Mail -Adresse, mit denen Sie E -Mails zu senden) und die Empfecent.List (die benutzerdefinierte Einstellung von recicent_address, die wir im .Env definiert haben).

).

Wenn ich nun meinen Posteingang überprüfe - wenn ich die Umgebungsvariable recicent_address in meine E -Mail -Adresse festlegt -, werde ich die von Django gesendete E -Mail -Nachricht erhalten.
So senden Sie E -Mail mit Django mit SMTP -Server

asynchrones E -Mail -Senden

In Django 4.x wird das Senden von Asynchronen -E -Mails unterstützt, um die Leistung zu verbessern. Dies ist nützlich für Websites mit hohem Verkehr oder beim Senden von Massen-E-Mails.

So können Sie eine E -Mail asynchron senden:
<span># CMD
</span>.venv<span>\Scripts\activate
</span>
<span># Power Shell
</span>.venv<span>\Scripts\Activate.ps1
</span>
<span># WSL
</span><span>source .venv/bin/activate</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

asynchrones E -Mail -Senden ist nützlich in Szenarien wie:
  • Nicht blockierende Vorgänge, bei denen das Senden einer E-Mail keine Benutzeranfragen verzögern sollte.
  • Senden von Bulk-E-Mails (Verwenden Sie eine Task-Warteschlange wie Sellerie für Produktionsmaßstäbe).

Hinweis: Während Django asynchrone E-Mail unterstützt, verwenden Sie für Massen-E-Mails im Produktionsmaßstab eine Hintergrundaufgabe-Warteschlange wie Sellerie oder Django-Q für echte nicht blockierende Operationen.

2. Erstellen Sie ein automatisiertes Kontaktformular mit Django

In diesem Abschnitt erstellen wir ein automatisiertes Kontaktformular mit Django-Formularen und der integrierten Send_mail-Funktion. Wir erstellen auch eine benutzerdefinierte Funktion send () innerhalb des Kontaktformulars, damit sie einfacher in den Ansichten implementieren können.

Beginnen wir zunächst die Kontakt -App. Geben Sie das Projekt Root Directory ein - wo sich verwaltet.py befindet - und laufen Sie:
pip <span>install django</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Installieren Sie es dann in Ihrer Variablen für installed_apps in der Datei von EmailProject/Settings.py:
django-admin startproject EmailProject
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Bevor Sie mit der Kontakt -App voranschreiten, konfigurieren wir die Urlpattern in der E -MailProject/urls.py -Datei. Importieren Sie dazu die Funktion django.urls.include und fügen Sie die Kontakt -URLs in das Gesamtprojekt auf. Mach dir keine Sorge; Wir konfigurieren die Kontakt -URLs später:
<span>cd EmailProject
</span>python manage.py runserver
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Kontaktformular

Geben Sie den Ordner der Kontakt -App ein und erstellen Sie eine Form.Py -Datei. Es ist eine gute Praxis, alle Ihre Formulare in einer Form.Py -Datei zu definieren, aber sie ist nicht obligatorisch. Aus diesem Grund fasst Django diese Datei standardmäßig nicht ein. Sie können die Formsdatei mit den folgenden Befehlen erstellen:
tree
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Öffnen Sie die gerade erstellte Datei und erstellen Sie die folgenden Importe:
python <span>-m venv .venv</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Das Django -Formmodul bietet uns alle erforderlichen Klassen und Felder, um unser Kontaktformular zu erstellen. Noch einmal importieren wir das Einstellungsobjekt und die Funktion "send_mail", um die E -Mails zu senden.

Unser Kontaktformular enthält mehrere Felder und verwendet zwei benutzerdefinierte Methoden: get_info (), die die von den Benutzer bereitgestellten Informationen formatieren und die E-Mail-Nachricht senden. Sehen wir uns in Code implementiert:

<span># CMD
</span>.venv<span>\Scripts\activate
</span>
<span># Power Shell
</span>.venv<span>\Scripts\Activate.ps1
</span>
<span># WSL
</span><span>source .venv/bin/activate</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Diese Klasse ist riesig, also lass uns aufschlüsseln, was wir in jedem Teil tun. Erstens definieren wir vier Felder, die zum Senden der E -Mail -Nachricht erforderlich sind:

  • Name und Anfrage sind Charfelder, die den Namen und den Grund der Kontaktnachricht darstellen.
  • E -Mail ist ein E -Mail -Feld, das die E -Mail -Adresse der Person darstellt, die versucht, Sie zu kontaktieren. Beachten Sie, dass die E -Mail nicht von der E -Mail -Adresse des Benutzers gesendet wird, sondern an der E -Mail -Adresse, die Sie für das Senden von E -Mails im Django -Projekt festgelegt haben.
  • Die Nachricht ist ein weiteres Charfield, außer dass wir das Textbereich -Widget verwenden. Dies bedeutet, dass es beim Anzeigen des Formulars ein
  • macht

Auf dem Weg zu den benutzerdefinierten Methoden verwenden wir nur die Get_info -Methode, um die Informationen des Benutzers zu formatieren und zwei Variablen zurückzugeben: Betreff, das nichts anderes als das Feld Anfrage ist, und die Nachricht, die die tatsächliche E -Mail -Nachricht ist, die von Django gesendet wird .

Andererseits erhält die Send () -Methode nur die formatierten Informationen von get_info und sendet die Nachricht mit der Funktion "send_mail". Obwohl dieser Abschnitt ziemlich groß war, werden Sie sehen, wie wir die Kontaktansichten vereinfacht haben, indem wir die gesamte Sendelogik an die ContactForm selbst implementieren.

Kontaktansichten

Öffnen Sie die Datei contact/Views.py und fügen Sie die folgenden Importe hinzu:

pip <span>install django</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Wie Sie sehen, werden wir Django generische Ansichten verwenden, was uns bei einfachen Aufgaben eine Menge Zeit spart - beispielsweise beim Einrichten eines Formulars mit Formview oder beim Erstellen einer Ansicht, die nur eine Vorlage mit einer Vorlage rendert TemplateView.

Importieren wir auch die im vorherigen Abschnitt erstellte Kontaktform und die Funktion Reverse_lazy, die bei der Arbeit mit klassenbasierten Ansichten verwendet wird. Setzen Sie die Ansichten fort, die ContactView:

schreiben:
django-admin startproject EmailProject
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Wie Sie sehen, erstellen wir eine einfache Formalansicht mit der von uns erstellten Kontaktform. Wir richten auch den template_name und den success_url ein. Wir schreiben die HTML -Vorlage und richten die URLs später ein.

Mit der gültigen Formmethode senden wir die E -Mail mit der Methode contactForm.send () nur dann, wenn alle Felder des Formulars gültig sind. Dies bedeutet, dass die Nachricht nicht gesendet wird, wenn der Benutzer ungültige Eingaben wie eine nicht formatierte E -Mail -Adresse eingibt.

Die obige Form_Valid-Methode-Implementierung wäre in einer funktionsbasierten Ansicht den folgenden Ansichten entsprechen:
python <span>-m venv .venv</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Beende in diesem Abschnitt werden wir eine contactSucessView schreiben, die dem Benutzer eine Erfolgsnachricht anzeigt. Da wir die TemplateView -Klasse bereits importiert haben, müssen wir nur daraus erben und das Attribut template_name definieren:

<span># CMD
</span>.venv<span>\Scripts\activate
</span>
<span># Power Shell
</span>.venv<span>\Scripts\Activate.ps1
</span>
<span># WSL
</span><span>source .venv/bin/activate</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Sie können die Ansichten.Py -Datei im GitHub -Repository überprüfen, wenn Sie Bedenken haben.

Wenden Sie URLs

an

Es ist Zeit, die URL -Muster der Kontakt -App zu erstellen. Da Django uns die URLS.Py -Datei standardmäßig nicht gibt, müssen wir sie mit dem folgenden Befehl erstellen (stellen Sie sicher, dass Sie sich im Ordner der Kontakt -App befinden):

pip <span>install django</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Öffnen Sie diese Datei und richten Sie die Variablen app_name und urlpatterns ein:

django-admin startproject EmailProject
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Wir verwenden Pfad, um die Route und ihre korrespondentierte Ansicht zur URL -Konfiguration der App einzuschließen. Wenn wir die Variable app_name auf "Kontakt" festlegen, bedeutet dies, dass die URL Namespacing der App so aussieht:

<span>cd EmailProject
</span>python manage.py runserver
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Hinweis: Ein Namespace ist das, was wir in Django -Vorlagen und -ansichten dynamisch nennen.

Sie können mehr über den Django -URL -Dispatcher in der offiziellen Dokumentation erfahren.

Schreibvorlagen

Django -Vorlagen sind die bevorzugte Methode, um Daten dynamisch anzuzeigen, indem sie HTML und spezielle Tags, die von der Django -Vorlagesprache bereitgestellt werden, verwendet werden.

Für diese spezielle App werden wir drei Vorlagen verwenden:

  • base.html: Alle anderen Vorlagen erben daraus. Es enthält das HTML -Skelett, das alle Vorlagen haben müssen, sowie Links zu Bootstrap.
  • contact.html: Zeigt das Kontaktformular an.
  • success.html: Zeigt eine Erfolgsnachricht an.

Beginnen wir zunächst die App -Vorlagenstruktur des Kontakts (stellen Sie sicher, dass Sie sich im Ordner der Kontakt -App befinden):

tree
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Die obigen Befehle erstellen die typische Vorlagenstruktur einer wiederverwendbaren Django -App - AppName/Vorlagen/Appname - und die zuvor erwähnten Baumvorlagendateien. So sollte die App -Dateistruktur jetzt aussehen:

├── EmailProject
│   ├── asgi.py
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── manage.py

1 directory, 6 files
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Lassen Sie uns in den Inhalt der Base.html -Vorlage:

springen:
<span># EmailProject/settings.py
</span>
<span># Bottom of the file
</span>EMAIL_BACKEND <span>= 'django.core.mail.backends.smtp.EmailBackend'
</span>EMAIL_HOST <span>= ''
</span>EMAIL_PORT <span>= 587
</span>EMAIL_USE_TLS <span>= True
</span>EMAIL_HOST_USER <span>= ''
</span>EMAIL_HOST_PASSWORD <span>= ''
</span>
Nach dem Login kopieren
Nach dem Login kopieren

Wie Sie sehen, ist es das einfache Skelett einer HTML -Datei, die Links zu Bootstrap 5 enthält. Dadurch können wir unsere Kontakt -App ohne Verwendung von CSS -Dateien stylieren. Mit dem { % Blocknamen-Block %} -Tag können wir einen Platzhalter einrichten, den „Kindervorlagen“ verwenden. Durch die Verwendung dieses Tags wird die Vererbung der Vorlage zu einer leichten Aufgabe.

Bevor Sie in die Formulare gehen
EMAIL_HOST <span>= 'smtp-mail.outlook.com'
</span>EMAIL_PORT <span>= 587
</span>EMAIL_USE_TLS <span>= True
</span>EMAIL_HOST_USER <span>= 'your-email@outlook.com'
</span>EMAIL_HOST_PASSWORD <span>= 'your-app-password'</span>
Nach dem Login kopieren

erneut, Crispy_Forms ist eine Django -App, und wir müssen sie in die Liste installed_apps aufnehmen:

EMAIL_HOST <span>= 'smtp.mail.yahoo.com'
</span>EMAIL_PORT <span>= 587
</span>EMAIL_USE_TLS <span>= True
</span>EMAIL_HOST_USER <span>= 'your-email@yahoo.com'
</span>EMAIL_HOST_PASSWORD <span>= 'your-app-password'</span>
Nach dem Login kopieren

Wir verwenden das Vorlagenpaket von Bootstrap 4, da die Startstrap -Formklassen zwischen der 4. und 5. Version kompatibel sind (zum Zeitpunkt des Schreibens).

Arbeiten wir nun an der Ankontakt.html -Vorlage:

python <span>-m venv .venv</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Beachten Sie, wie wir die Basisvorlage erweitert haben und den Block -Platzhalter verwenden. Dies macht die Sprache der Django -Vorlagen so effizient, da wir viel HTML -Kopieren und -besten sparen können.

Wenn wir über das Formular sprechen, verwenden wir die Methode „Post“, was bedeutet, dass unser ContactView die vom Benutzer angegebenen Daten verarbeitet und die E -Mail senden, wenn das Formular gültig ist. Der { % csrf_token %} ist aus Sicherheitsgründen in jeder Form obligatorisch. Die Dokumentation von Django hat eine dedizierte Seite zu CSRF -Token und die Gründe, sie bei der Arbeit mit Formularen zu verwenden.

Wir werden das Formular mit dem knusprigen Template -Tag rendern, weshalb wir die knusprigen Tags mit { % lad crispy_forms_tags %}.

geladen haben.

Schließlich schreiben wir den Erfolg.html Vorlage:
<span># CMD
</span>.venv<span>\Scripts\activate
</span>
<span># Power Shell
</span>.venv<span>\Scripts\Activate.ps1
</span>
<span># WSL
</span><span>source .venv/bin/activate</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Wie Sie sehen, handelt es sich um eine einfache Erfolgsankündigung mit einem Link zum Kontaktformular, falls der Benutzer eine andere Nachricht senden möchte.

Führen Sie den Server erneut aus und besuchen Sie http: // localhost: 8000 (stellen Sie sicher, dass die .venv aktiviert sind und Sie befinden sich im Projekt -Root -Ordner):
pip <span>install django</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Das Bild unten zeigt, wie das endgültige Kontaktformular aussieht.
So senden Sie E -Mail mit Django mit SMTP -Server

Und dies ist ein Bild der Erfolgsnachricht.
So senden Sie E -Mail mit Django mit SMTP -Server

Und hier ist ein Bild der E -Mail im Posteingang.
So senden Sie E -Mail mit Django mit SMTP -Server

Best Practices, um

zu folgen

1. Wiederverwendbare E -Mail -Sendungsfunktion

Um Ihre E-Mail-Sendungs-Logik modular und wiederverwendbar zu machen, können Sie die E-Mail-Sendungsfunktion in eine Helferfunktion verschieben:
django-admin startproject EmailProject
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Sie können diese Funktion jetzt überall dort aufrufen, wo Sie E -Mails senden müssen, einschließlich Ihres Kontaktformulars.

2. Einheitstest

Sie können Django.test verwenden, um E -Mail -Django -Funktionen zu testen.
<span>cd EmailProject
</span>python manage.py runserver
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

3. Senden reichhaltiger HTML -E -Mails

HTML -E -Mails bieten ein besseres Design und eine bessere Präsentation. Verwenden Sie die Template -Engine von Django, um umfangreiche E -Mail -Inhalte zu erstellen:
tree
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

4. Integration von E-Mail-Diensten von Drittanbietern

Für produktionsbereite Anwendungen erwägen Sie Dienste von Drittanbietern wie SendGrid, MailGun oder AWS SES. Diese Dienste bieten erweiterte Funktionen wie E -Mail -Analyse, Lieferverfolgung und Spam -Filterung.
├── EmailProject
│   ├── asgi.py
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── manage.py

1 directory, 6 files
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

5. E -Mail -Überprüfung in Benutzerregistrierung

E -Mail -Überprüfungslinks während der Benutzerregistrierung senden, um SPAM -Konten zu verhindern.
<span># EmailProject/settings.py
</span>
<span># Bottom of the file
</span>EMAIL_BACKEND <span>= 'django.core.mail.backends.smtp.EmailBackend'
</span>EMAIL_HOST <span>= ''
</span>EMAIL_PORT <span>= 587
</span>EMAIL_USE_TLS <span>= True
</span>EMAIL_HOST_USER <span>= ''
</span>EMAIL_HOST_PASSWORD <span>= ''
</span>
Nach dem Login kopieren
Nach dem Login kopieren

einpacken

Herzlichen Glückwunsch! Sie haben gelernt, wie man E -Mails mit Django sendet und wie man auch ein Django -Kontaktformular erstellt.

Es gibt viele Möglichkeiten, E -Mails mit Django zu senden. In diesem Tutorial haben Sie es mit Ihrer persönlichen E -Mail -Adresse geschafft, aber ich möchte, dass Sie andere Tools erkunden und in Ihre Projekte integrieren.

In diesem Tutorial haben wir Folgendes behandelt:

  • So richten Sie Django -Einstellungen ein, um E -Mails zu bedienen
  • So verwenden Sie ein persönliches E -Mail -Konto, um E -Mails in einem kleinen Projekt zu senden
  • So verwenden Sie .Env -Dateien zur Verwendung sensibler Daten in einem Django -Projekt
  • So erstellen Sie ein automatisiertes Kontaktformular

Weitere Informationen zu Django finden Sie in „Erstellen Sie eine Foto-Sharing-App mit Django“.

FAQs auf Django E -Mail mit SMTP -Server

senden

Kann ich eine E -Mail von Django senden?

Ja, Django bietet ein integriertes E-Mail-Sendungs-Framework, mit dem es einfach wird, E-Mails zu senden. Durch Konfigurieren der SMTP -Einstellungen in Ihrer Datei "Setting.Py" können Sie E -Mails mit der Funktion "Send_mail" oder "E -MailMessage -Klasse" senden.

Wie sende ich E -Mails in Django?

, um Django zum Senden von E -Mails zu konfigurieren:
  • Stellen Sie die SMTP -Details in Ihren Einstellungen ein. .com 'E -Mail_host_password =' ​​your_app_password '
  • Verwenden Sie ein sicheres Passwort anstelle Ihres Haupt -E -Mail -Passworts, wenn Sie Google Mail oder ähnliche Anbieter verwenden.
  • Für die Produktion erwägen Sie Dienste von Drittanbietern wie Sendgrid, Mailgun oder Amazon SES für eine bessere Skalierbarkeit.

Wie sende ich Outlook Mail in Django?

Um Outlook -Mails in Django zu senden, können Sie Djangos E -Mail -Senden -Funktionen mit den SMTP -Einstellungen für Outlook verwenden. Konfigurieren Sie die SMTP -Einstellungen für Outlook in der Datei Ihres Django -Projekts. Mit diesen Einstellungen können Django eine Verbindung zum Outlook SMTP -Server herstellen, um E -Mails zu senden.

Wie kann man E -Mails in Django erhalten?

Konfigurieren Sie in den Einstellungen Ihres Django -Projekts. In der Regel benötigen Sie die IMAP -Serverdetails für Ihren E -Mail -Anbieter zusammen mit Authentifizierungsanmeldeinformationen. Verwenden Sie anschließend die IMAPLIB -Bibliothek, um eine Verbindung zu Ihrem E -Mail -Server herzustellen und E -Mails abzurufen. Sie können dies in Ihren Django -Ansichten oder benutzerdefinierten Verwaltungsbefehlen tun. Sobald Sie eine E -Mail abgerufen haben, können Sie sie verarbeiten, Informationen extrahieren und die erforderlichen Aktionen in Ihrer Django -Anwendung ausführen. Dies kann das Parsen des E -Mail -Inhalts, das Speichern relevanter Daten in Ihrer Datenbank oder das Auslösen spezifischer Aktionen basierend auf dem Inhalt oder Absender der E -Mail beinhalten.

Wie teste ich E -Mails, um Django zu senden, ohne echte E -Mails zu senden?

Während der Entwicklung können Sie ein optionales E -Mail -Backend verwenden, um E -Mails zu testen, ohne eine Verbindung zu einem echten SMTP -Server herzustellen. Zum Beispiel: Konsolen -E -Mail -Backend: Drucken E -Mail -Nachrichten an das Terminal, anstatt sie zu senden.
python <span>-m venv .venv</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Verwenden Sie für fortgeschrittenere Tests Tools wie Mailhog oder MailTrap, die als gefälschte SMTP -Server zum Erfassen und Anzeigen von Test -E -Mails fungieren.

Wie verwalte ich sensible E -Mail -Anmeldeinformationen sicher?

Verwenden Sie Django Environ, um sensible Anmeldeinformationen (wie E -Mail -Host, Benutzername und Passwort) aus einer .Env -Datei zu laden:

  1. Django Environ installieren: PIP Installieren Sie Django-Eniron
  2. Erstellen einer .env -Datei: E -Mail_host = SMTP.gmail.com E -Mail_HOST_USER=YOUR_EMAIL@EMABLE.com E -Mail_HOST_PASSWORD = YOUR_APP_PASSWORD
  3. Laden Sie die .Env -Datei in Einstellungen. EMAIL_HOST_PASSWORD ')

Das obige ist der detaillierte Inhalt vonSo senden Sie E -Mail mit Django mit SMTP -Server. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage