Senden von E-Mails aus Python Flask-Anwendungen mit Twilio SendGrid

Veröffentlicht: 2020-06-30

Die Entscheidung, ob Sie Ihre E-Mail-Infrastruktur aufbauen oder kaufen, ist keine leichte Entscheidung. Haben Sie die Bandbreite, um Zustellbarkeitsprobleme zu unterstützen? Werden Sie in der Lage sein, mit Ihrem Senden Schritt zu halten, während Sie wachsen? Was ist kostengünstiger? Es gibt zwar eine Reihe von Faktoren zu berücksichtigen, aber das ist ein Gespräch für einen anderen Leitfaden (wie diesen Build it oder Buy It Guide ).

Stattdessen zeigt Ihnen dieses Tutorial, wie einfach es ist, E-Mails über einen dedizierten E-Mail-Dienst zu senden. Wir erklären Ihnen, wie Sie E-Mails über Twilio SendGrid mit dem Flask - Framework und der Flask-Mail- Erweiterung zustellen.

Tutorial-Tools

Um diesem Tutorial zu folgen, benötigen Sie die folgenden Elemente:

  • Python 3.6 oder neuer. Wenn Ihr Betriebssystem keinen Python 3.6+-Interpreter bereitstellt, können Sie zu python.org gehen, um ein Installationsprogramm herunterzuladen.
  • Ein kostenloses Twilio SendGrid-Konto. Wenn Sie neu bei Twilio SendGrid sind, melden Sie sich für ein Testkonto an . Mit einem Testkonto können Sie 30 Tage lang 40.000 E-Mails versenden, danach 100 E-Mails pro Tag für immer.

Einrichtung mit SendGrid

Bevor Sie E-Mails über SendGrid senden können, müssen Sie einen API-Schlüssel erstellen, mit dem Sie den Zugriff auf SendGrid-Dienste authentifizieren. Melden Sie sich bei Ihrem SendGrid-Konto an, klicken Sie dann in der linken Seitenleiste auf „Einstellungen“ und dann auf „ API-Schlüssel. Klicken Sie auf „API-Schlüssel erstellen“.

Geben Sie Ihrem API-Schlüssel einen freundlichen Namen (halten Sie ihn einfach und unkompliziert, damit Sie sich merken, worauf er sich bezieht!). Für dieses Tutorial haben wir den Namen Flask-Mail gewählt. Wir haben „Vollzugriff“ für Berechtigungen ausgewählt, wodurch der Schlüssel die Möglichkeit erhält, alle erforderlichen E-Mail-Sendefunktionen auszuführen (Zugriff auf GET-, PATCH-, PUT-, DELETE- und POST-Endpunkte). Wenn Sie es vorziehen, einen Schlüssel mit sehr spezifischen Berechtigungen zu erstellen, wählen Sie „Eingeschränkter Zugriff“ und konfigurieren Sie Ihren Zugriff nach Bedarf.

Wenn Sie auf die Schaltfläche „Erstellen & Anzeigen“ klicken, wird Ihnen Ihr Schlüssel angezeigt. Dieser Schlüssel wird nie wieder angezeigt, also müssen Sie darauf klicken, um ihn in die Zwischenablage zu kopieren. Fügen Sie es dann in ein sicheres Dokument ein, damit Sie es später verwenden können. Wenn Sie Ihren Schlüssel verlieren, müssen Sie einen brandneuen generieren. Sobald Sie Ihren Schlüssel gespeichert haben, können Sie auf die Schaltfläche „Fertig“ klicken.

Erstellen einer Python-Umgebung

Nachdem wir die Einrichtung abgeschlossen haben, können wir uns mit dem Senden von E-Mails aus Python Flask-Anwendungen befassen. Wir beginnen damit, auf Ihrem Computer ein neues Verzeichnis mit dem Namen * twilio-sendgrid-tests * (oder etwas Ähnliches) zu erstellen und dann darin eine neue virtuelle Python-Umgebung zu erstellen.

Für Mac- und Unix-Benutzer lauten die Befehle:

Für Windows-Benutzer lauten die Befehle:

Als nächstes installieren Sie Flask, Flask-Mail und python-dotenv in Ihrer virtuellen Umgebung:

Flask-Anwendung einrichten

Lassen Sie uns eine Flask- und Flask-Mail-Startanwendung in der Datei app.py erstellen :

Hier sehen Sie, wie Sie Flask-Mail richtig konfigurieren, um den SMTP-Dienst von SendGrid zu verwenden. Die wichtigen Einstellungen sind:

  • Der Mailserver sollte `smtp.sendgrid.net` sein.
  • Der Mail-Port sollte 587 sein. (Wissen Sie, welche Ports wann zu verwenden sind? Sehen Sie sich diesen Blog-Beitrag an. )
  • TLS muss aktiviert sein. (Was ist der Unterschied zwischen SSL und TLS ?)
  • Authentifizierung ist erforderlich. Für den Benutzernamen müssen Sie „apikey“ verwenden (dies ist für alle SendGrid-Konten gleich). Das Passwort ist der SendGrid-API-Schlüssel, den Sie im vorherigen Abschnitt erstellt haben.

Für diese Flask-Anwendung haben wir die obigen Einstellungen in den richtigen Konfigurationsschlüsseln für die Flask-Mail-Erweiterung hinzugefügt. Aus Sicherheitsgründen haben wir den API-Schlüssel aus einer Umgebungsvariablen namens „SENDGRID_API_KEY“ importiert. Wir legen auch eine standardmäßige Absender-E-Mail-Adresse aus einer Umgebungsvariablen fest. Dies ist die E-Mail-Adresse, die standardmäßig im Feld „Von“ aller E-Mails angezeigt wird.

Erstellen Sie eine .env -Datei mit den beiden erforderlichen Variablen:

Flask importiert automatisch die in der .env -Datei definierten Variablen (sofern Sie das Paket python-dotenv installiert haben), sodass dies ausreicht, um diese beiden Variablen in die Flask-Anwendungskonfiguration zu übernehmen.

Senden einer Test-E-Mail

Mal sehen, wie Sie sich selbst eine Test-E-Mail aus der Python-Shell senden können:

Beachten Sie, dass wir die Python-Shell mit dem Befehl „flask shell“ gestartet haben. Dadurch wird sichergestellt, dass die in app.py erstellte Flask-Anwendung importiert wird.

Sobald Sie sich in der Shell befinden, importieren Sie die in app.py erstellte „mail“ -Instanz und die „Message“-Klasse aus Flask-Mail:

Erstellen Sie als Nächstes eine `Message`-Instanz:

Der letzte Schritt besteht darin, diese E-Mail zu senden:

Und das ist es! Wenn alles nach Plan läuft, sollte die E-Mail in wenigen Sekunden in Ihrem Posteingang eintreffen.

Wenn Sie ein Flask-Routenbeispiel sehen möchten, das diese Funktionalität integriert, können Sie unten in app.py eine einfache Route hinzufügen :

Um die Beispielanwendung fertigzustellen, müssen Sie die Vorlagendatei index.html hinzufügen. Erstellen Sie zunächst ein Verzeichnis für Ihre Vorlagen:

Und schreiben Sie dann den folgenden Inhalt in die Datei templates/index.html :

Führen Sie die Testanwendung aus mit:

Navigieren Sie dann in Ihrem Webbrowser zu http://localhost:5000 , um auf die Anwendung zuzugreifen.

Sie können jetzt eine Empfänger-E-Mail-Adresse eingeben und wenn Sie auf die Schaltfläche klicken, wird eine Test-E-Mail an diese Adresse gesendet.

Fehlerbehebung bei Lieferproblemen

Wenn Sie die obige Flask-Anwendung verwenden, sollten Sie erfolgreich E-Mails senden können. Es besteht jedoch die Möglichkeit, dass Ihre E-Mails nicht zugestellt werden. Da SendGrid E-Mails asynchron sendet, treten die meisten Übermittlungsfehler auf, nachdem der Absender seine Seite der Transaktion abgeschlossen hat, sodass Ihre Anwendung keinen Hinweis darauf hat, dass ein Fehler aufgetreten ist. In diesem Fall wurde die E-Mail wahrscheinlich vom E-Mail-Server des Empfängers abgelehnt.

Wenn Sie dies erleben, indem Sie eine E-Mail wie beschrieben senden, können Sie glücklicherweise das Twilio SendGrid-Dashboard verwenden, um Ihnen bei der Fehlersuche zu helfen, was passiert ist. Klicken Sie im SendGrid-Dashboard auf Aktivität und dann auf die Schaltfläche „Alle Aktivitäten anzeigen“ in der Mitte der Seite. Dies zeigt Ihnen eine Liste aller E-Mails, die Sie zu senden versucht haben, und gibt an, ob sie erfolgreich zugestellt wurden oder nicht.

Sie können im Bild oben sehen, dass eine E-Mail, die an eine example.com-Adresse gesendet wurde, nicht zugestellt werden konnte. Für alle E-Mails, die nicht zugestellt wurden, können Sie auf die E-Mail klicken, um detaillierte Informationen anzuzeigen, einschließlich aller vom E-Mail-Server des Empfängers gesendeten Fehlerantworten.

Sobald Sie festgestellt haben, warum Ihre E-Mails nicht gesendet werden, gibt es eine Reihe von Möglichkeiten, diese Zustellprobleme zu lösen. Wenn Sie eine Reihe von Rechtschreibfehlern in den E-Mails sehen (z. B. @yaho.com oder @gmal.com), kann es sich lohnen, ein E-Mail- Validierungstool zu untersuchen, um häufig auftretende Rechtschreibfehler in Ihrer E-Mail-Kontaktliste zu finden.

Es gibt viele andere Probleme, die zu einer fehlgeschlagenen Zustellung führen können, einschließlich einer schlechten Sendereputation oder einer blockierten IP-Adresse. Erfahren Sie alles über die E-Mail-Zustellbarkeit in unserem Leitfaden zur E-Mail-Zustellbarkeit 2020 .

Fazit

Wie Sie dem Tutorial entnehmen können, lässt sich Twilio SendGrid problemlos in den E-Mail-Versand-Workflow von Flask integrieren, wodurch das Versenden von E-Mails zu einer einfachen Aufgabe wird.

Wenn Sie sich jetzt fragen, wie Sie E-Mails vom Flask Framework in Python empfangen, keine Sorge, wir haben Sie abgedeckt! Sehen Sie sich diesen Artikel an: So empfangen Sie E-Mails mit dem Flask Framework für Python .

Weitere Ressourcen zur Integration mit Twilio SendGrid oder zum Senden über unsere APIs finden Sie in unserem Knowledge Center .