{"id":20223,"date":"2025-01-07T00:00:00","date_gmt":"2025-01-07T00:00:00","guid":{"rendered":"https:\/\/www.mailgun.com\/blog\/emails-verifizieren-mit-python-und-der-mailgun-api\/"},"modified":"2026-09-14T22:53:59","modified_gmt":"2026-09-14T22:53:59","slug":"emails-verifizieren-mit-python-und-der-mailgun-api","status":"publish","type":"blog","link":"https:\/\/www.mailgun.com\/de\/blog\/dev-life\/emails-verifizieren-mit-python-und-der-mailgun-api\/","title":{"rendered":"E-Mails verifizieren mit Python 3.9+ und der Mailgun-API"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Ganz gleich, ob Sie Transaktions-E-Mails, Newsletter oder Werbeinhalte versenden: Die Pflege einer sauberen und verifizierten E-Mail-Liste kann die Zustellbarkeit erheblich verbessern, verhindern, dass Ihre Nachrichten in Spam-Ordnern landen, und die Reputation Ihrer Domain sch\u00fctzen. Ung\u00fcltige oder falsch getippte E-Mail-Adressen k\u00f6nnen zu h\u00f6heren Bounce-Raten f\u00fchren, was wiederum Abstrafungen durch E-Mail-Service-Provider und ein geringeres Engagement zur Folge hat. In diesem Leitfaden erfahren Sie, wie Sie Ihre E-Mails mit der Mailgun-API verifizieren.<\/p>\n\n\n\r\n    <nav data-content-type=\"longform\" class=\"toc-block longform-spacings px-5 py-6 px-md-6 px-lg-7 py-md-7 bg-light fs-sm rounded-lg\" aria-labelledby=\"toc-title-7786\"><p class=\"h5 m-0\" id=\"toc-title-7786\">Inhaltsverzeichnis<\/p><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">01<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#was-ist-die-e-mail-validierungs-api-fuer-massen-e-mails-von-mailgun\">Was ist die E-Mail-Validierungs-API f\u00fcr Massen-E-Mails von Mailgun?<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">02<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#massen-e-mail-validierung-mit-python-und-der-mailgun-api-implementieren\">Massen-E-Mail-Validierung mit Python und der Mailgun-API implementieren<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">03<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#mailgun-fuer-die-massen-e-mail-validierung-einrichten\">Mailgun f\u00fcr die Massen-E-Mail-Validierung einrichten<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">04<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#projektverzeichnis-und-abhaengigkeiten-einrichten\">Projektverzeichnis und Abh\u00e4ngigkeiten einrichten<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">05<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#python-projekt-und-konfigurationsskript-erstellen\">Python-Projekt und Konfigurationsskript erstellen<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">06<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#datei-fuer-ihre-e-mail-liste-vorbereiten\">Datei f\u00fcr Ihre E-Mail-Liste vorbereiten<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">07<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#massenvalidierungsauftrag-erstellen\">Massenvalidierungsauftrag erstellen<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">08<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#funktionen-zum-pruefen-des-auftragsstatus-und-herunterladen-der-ergebnisse-entwickeln\">Funktionen zum Pr\u00fcfen des Auftragsstatus und Herunterladen der Ergebnisse entwickeln<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">09<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#funktionen-zum-pruefen-des-auftragsstatus-und-herunterladen-der-ergebnisse-entwickeln\">Funktionen zum Pr\u00fcfen des Auftragsstatus und Herunterladen der Ergebnisse entwickeln<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">10<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#validierungsergebnisse-parsen-und-verarbeiten\">Validierungsergebnisse parsen und verarbeiten<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">11<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#das-finale-skript\">Das finale Skript<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">12<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#testen-durch-uebermitteln-einer-massen-e-mail-validierungsauftragsanfrage\">Testen durch \u00dcbermitteln einer Massen-E-Mail-Validierungsauftragsanfrage<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">13<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#testen-durch-abrufen-des-status-des-massen-e-mail-validierungsauftrags\">Testen durch Abrufen des Status des Massen-E-Mail-Validierungsauftrags<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">14<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#massen-e-mail-validierung-in-eine-django-anwendung-integrieren\">Massen-E-Mail-Validierung in eine Django-Anwendung integrieren<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">15<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#zusammenfassung\">Zusammenfassung<\/a><\/div><\/div><\/nav>\n\n\n<h2 class=\"wp-block-heading\">Was ist die E-Mail-Validierungs-API f\u00fcr Massen-E-Mails von Mailgun?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/documentation.mailgun.com\/docs\/inboxready\/mailgun-validate\/bulk_valid_preview\/\" target=\"_tabs\" rel=\"noopener noreferrer\">Die E-Mail-Validierungs-API f\u00fcr Massen-E-Mails von Mailgun<\/a> wurde entwickelt, um die E-Mail-Verifizierung sowohl skalierbar als auch effizient zu gestalten. Damit kann das Entwicklungsteam ganze Listen von E-Mail-Adressen validieren und auf h\u00e4ufige Probleme wie Syntaxfehler, Wegwerf-E-Mails oder Adressen mit inaktiven E-Mail-Servern pr\u00fcfen. Die API liefert detaillierte Ergebnisse f\u00fcr jede E-Mail, sodass Sie problemlos die entsprechende Aktion ergreifen k\u00f6nnen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In diesem Tutorial erfahren Sie, wie Sie die E-Mail-Validierungs-API f\u00fcr Massen-E-Mails von Mailgun in Ihre Python-Anwendungen integrieren. Von der Einrichtung Ihres Mailgun-Kontos und dem sicheren Umgang mit Anmeldedaten bis hin zum Schreiben von Code, der E-Mails validiert und die Ergebnisse verarbeitet, bietet dieser Leitfaden eine Schritt-f\u00fcr-Schritt-Anleitung zur effizienten Verifizierung gro\u00dfer E-Mail-Listen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Massen-E-Mail-Validierung mit Python und der Mailgun-API implementieren<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Bevor Sie mit diesem Tutorial beginnen, stellen Sie sicher, dass Sie \u00fcber Folgendes verf\u00fcgen:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ein grundlegendes Verst\u00e4ndnis der Python-Programmierung<\/li>\n\n\n\n<li><a href=\"https:\/\/www.python.org\/downloads\/\" target=\"_tabs\" rel=\"noopener noreferrer\">Python<\/a> 3.9+<\/li>\n\n\n\n<li>Ein <a href=\"https:\/\/signup.mailgun.com\/new\/signup\" target=\"_tabs\" rel=\"noopener noreferrer\">Mailgun-Konto<\/a>; f\u00fcr dieses Tutorial ist ein kostenpflichtiges Konto erforderlich<\/li>\n\n\n\n<li>Erfahrung in der Anwendungsentwicklung mit dem <a href=\"https:\/\/www.django-rest-framework.org\/\" target=\"_tabs\" rel=\"noopener noreferrer\">Django REST framework<\/a><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Dieses Tutorial verwendet das Windows-Betriebssystem. Alle Anweisungen sollten auch f\u00fcr Linux und macOS funktionieren, achten Sie jedoch darauf, die Pfadtrennzeichen oder Syntaxreferenzen des Betriebssystems bei Bedarf anzupassen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Mailgun f\u00fcr die Massen-E-Mail-Validierung einrichten<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Um zu beginnen, <a href=\"https:\/\/app.mailgun.com\/\" target=\"_tabs\" rel=\"noopener noreferrer\">melden Sie sich bei Ihrem Mailgun-Konto an<\/a> und navigieren Sie zum Dashboard. Scrollen Sie nach unten und w\u00e4hlen Sie die Option <b>API keys<\/b>:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" class=\"wp-image-4069\" width=\"1958\" height=\"876\" src=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2025-01-07_at_10.18.38_AM.png\" alt=\"API keys option scrfeen\" srcset=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2025-01-07_at_10.18.38_AM.png 1958w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2025-01-07_at_10.18.38_AM-300x134.png 300w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2025-01-07_at_10.18.38_AM-768x344.png 768w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2025-01-07_at_10.18.38_AM-1024x458.png 1024w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2025-01-07_at_10.18.38_AM-1536x687.png 1536w\" sizes=\"(max-width: 1958px) 100vw, 1958px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Klicken Sie auf <b>Add new key<\/b>, um einen neuen API-Schl\u00fcssel hinzuzuf\u00fcgen:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" class=\"wp-image-4075\" width=\"1958\" height=\"522\" src=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2025-01-07_at_10.18.48_AM.png\" alt=\"Add new key to add a new API key screen\" srcset=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2025-01-07_at_10.18.48_AM.png 1958w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2025-01-07_at_10.18.48_AM-300x80.png 300w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2025-01-07_at_10.18.48_AM-768x205.png 768w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2025-01-07_at_10.18.48_AM-1024x273.png 1024w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2025-01-07_at_10.18.48_AM-1536x409.png 1536w\" sizes=\"(max-width: 1958px) 100vw, 1958px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Geben Sie eine Beschreibung ein (z. B. \u201eBulk Email Validation API Key&#8220;) und klicken Sie auf <b>Create Key<\/b>:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" class=\"wp-image-4079\" width=\"1960\" height=\"790\" src=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2025-01-07_at_10.18.56_AM.png\" alt=\"Create Key screen\" srcset=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2025-01-07_at_10.18.56_AM.png 1960w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2025-01-07_at_10.18.56_AM-300x121.png 300w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2025-01-07_at_10.18.56_AM-768x310.png 768w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2025-01-07_at_10.18.56_AM-1024x413.png 1024w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2025-01-07_at_10.18.56_AM-1536x619.png 1536w\" sizes=\"(max-width: 1960px) 100vw, 1960px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Sobald der API-Schl\u00fcssel erstellt ist, kopieren Sie die Schl\u00fcsselinformationen, da Sie diese sp\u00e4ter noch ben\u00f6tigen. Falls Sie vergessen, die Informationen zu kopieren, oder den Schl\u00fcssel verlieren, ist das kein Problem: Sie k\u00f6nnen Ihren API-Schl\u00fcssel l\u00f6schen und einen neuen erstellen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Projektverzeichnis und Abh\u00e4ngigkeiten einrichten<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Erstellen Sie ein Projektverzeichnis auf Ihrem Rechner und wechseln Sie in dieses Verzeichnis. \u00d6ffnen Sie anschlie\u00dfend ein Terminal, dessen Pfad auf das aktuelle Projektverzeichnis eingestellt ist, und f\u00fchren Sie den folgenden Befehl aus, um eine virtuelle Python-Umgebung f\u00fcr dieses Tutorial zu erstellen:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>python -m venv venv<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aktivieren Sie die virtuelle Umgebung:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>venvScriptsactivate<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Installieren Sie dann die Requests-Bibliothek, die f\u00fcr die Interaktion mit den Mailgun-Endpunkten verwendet wird:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>pip install requests<\/code><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Python-Projekt und Konfigurationsskript erstellen<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Sobald Sie Ihre virtuelle Umgebung aktiviert haben, erstellen Sie im Projektverzeichnis ein neues Verzeichnis namens <code>standalone_python_scripts<\/code>. Dort werden Sie die Python-Module entwickeln, die f\u00fcr die Massen-E-Mail-Validierung \u00fcber die Mailgun-Endpunkte erforderlich sind.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Erstellen Sie in diesem neuen Verzeichnis eine neue Python-Datei namens <code>config.py<\/code> und f\u00fcgen Sie den folgenden Code ein, um die eigenst\u00e4ndige Python-Skript-Anwendung zu konfigurieren:<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                Python                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"In die Zwischenablage kopieren\" data-clipboard-success-label=\"Kopiert\" data-clipboard-error-label=\"Kopieren nicht m\u00f6glich\" data-tooltip=\"In die Zwischenablage kopieren\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"In die Zwischenablage kopieren\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                            <pre class=\"w-100 h-100 m-0 line-numbers language-Python\">\r\n                                <code id=\"code_0_content\" class=\"language-Python\">\r\n\r\n                                    import osrnrn# Retrieve the API key from the environment variablernrnAPI_KEY = os.getenv(&quot;MAILGUN_API_KEY&quot;)rnrn# Mailgun API base URLrnrnMAILGUN_API_URL = &quot;https:\/\/api.mailgun.net\/v4\/address\/validate\/bulk&quot;rnrnLIST_NAME = &quot;bulk_mailing_list_validation_1&quot;rnrnFILE_PATH = &quot;mailing_list.csv&quot;rnrnCOMMAND = &quot;submit_job&quot; # Possible values are &quot;submit_job&quot; and &quot;get_job_status&quot;rn\r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\">Dieses Config-Modul enth\u00e4lt die Konfigurationsvariablen, die f\u00fcr die Durchf\u00fchrung der Massen-E-Mail-Validierungsanfrage erforderlich sind.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Richten Sie eine neue Umgebungsvariable, MAILGUN_API_KEY, auf Ihrem Host-Rechner ein, indem Sie den folgenden Befehl ausf\u00fchren:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>SET MAILGUN_API_KEY=<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dadurch wird der API-Schl\u00fcssel zugewiesen, den Sie zuvor bei der Einrichtung Ihres Mailgun-Kontos generiert haben.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn Sie Linux oder macOS nutzen, f\u00fchren Sie den folgenden Befehl aus:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>export MAILGUN_API_KEY=<\/code><\/p>\n\n\n    <div data-content-type=\"longform\"  class=\"callout text-body-color px-5 py-6 px-md-6 px-lg-7 py-md-7 longform-spacings rounded-lg bg-light\" data-theme=\"light\">\r\n\r\n        <div class=\"content-body\"> Indem Sie den API-Schl\u00fcssel in einer Umgebungsvariablen speichern und nicht fest in der Konfigurationsdatei codieren, bleiben vertrauliche Informationen gesch\u00fctzt.<\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\">Belassen Sie die Werte der anderen Variablen vorerst so, wie sie sind. Die Variable LIST_NAME enth\u00e4lt den Bezeichner f\u00fcr Ihre zu validierende E-Mail-Liste. FILE_PATH enth\u00e4lt den Pfad zur Eingabe-CSV-Datei, die die Liste der zu validierenden E-Mails enth\u00e4lt.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Datei f\u00fcr Ihre E-Mail-Liste vorbereiten<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Da das Konfigurationsskript nun \u00fcber die Variable FILE_PATH auf den Dateipfad einer E-Mail-Liste verweist, ben\u00f6tigen Sie eine tats\u00e4chliche E-Mail-Liste mit E-Mail-Adressen zum Validieren. Erstellen Sie eine Datei namens <code>mailing_list.csv<\/code> im <code>standalone_python_scripts-Verzeichnis<\/code> und f\u00fcgen Sie f\u00fcr den Anfang einige Beispiel-E-Mail-Adressen ein:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>email<br>dummy_email@dummydomain.com<br>test_email@testemaildomain.com<br>non_existent_email_id_123456789@gmail.com<br>hellojohnsemail123@gmail.com<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die hier verwendeten E-Mail-Adressen sind nicht g\u00fcltig. Sie k\u00f6nnen im selben Format weitere g\u00fcltige oder ung\u00fcltige Adressen aus Ihrer eigenen gew\u00fcnschten Liste von E-Mail-Adressen hinzuf\u00fcgen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Massenvalidierungsauftrag erstellen<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Da die E-Mail-Liste nun vorliegt und die Konfiguration f\u00fcr den Validierungsprozess abgeschlossen ist, ist es an der Zeit, eine Funktion zur Erstellung eines Massen-E-Mail-Validierungsauftrags mit Mailgun einzurichten.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Erstellen Sie im selben Verzeichnis eine Python-Skriptdatei namens <code>bulk_email_validation.py<\/code> und definieren Sie eine Funktion <code>create_bulk_validation_job<\/code>, die zwei Parameter verwendet: <code>list_name<\/code> (Name der E-Mail-Liste) und <code>file_path <\/code>(Pfad zur Datei mit den E-Mails):<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                Python                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"In die Zwischenablage kopieren\" data-clipboard-success-label=\"Kopiert\" data-clipboard-error-label=\"Kopieren nicht m\u00f6glich\" data-tooltip=\"In die Zwischenablage kopieren\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"In die Zwischenablage kopieren\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                            <pre class=\"w-100 h-100 m-0 line-numbers language-Python\">\r\n                                <code id=\"code_0_content\" class=\"language-Python\">\r\n\r\n                                    def create_bulk_validation_job(list_name, file_path):rn    &quot;&quot;&quot;rn    This function creates a bulk validation job using the Mailgun API.rnrn    :param list_name: The name of the mailing list for validation.rn    :param file_path: The path to the CSV file containing emails to validate.rn    :return: Response object containing the job details.rn    &quot;&quot;&quot;rn    url = f&quot;{MAILGUN_API_URL}\/{list_name}&quot;rnrn    try:rn        # Send a POST request with the file to Mailgun&#039;s APIrn        with open(file_path, &quot;rb&quot;) as file_data:rn            response = requests.post(rn                url, auth=(&quot;api&quot;, API_KEY), files={&quot;file&quot;: file_data}rn            )rnrn        # Check if the request was successfulrn        if response.status_code == 202:rn            logging.info(f&quot;Bulk validation job created successfully for {list_name}&quot;)rn        else:rn            logging.error(rn                f&quot;Error creating validation job: {response.status_code} {response.text}&quot;rn            )rnrn        return response.json()rnrn    except Exception as e:rn        logging.error(f&quot;An error occurred while creating bulk validation job: {str(e)}&quot;)rn        return Nonern\r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\">Die Funktion sendet eine POST-Anfrage an die API von Mailgun, um den Massen-E-Mail-Validierungsprozess zu starten. Die Anfrage enth\u00e4lt die Datei mit den E-Mail-Adressen, die validiert werden sollen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Funktionen zum Pr\u00fcfen des Auftragsstatus und Herunterladen der Ergebnisse entwickeln<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Schreiben Sie nun im selben Skript <code>bulk_email_validation.py<\/code> eine weitere Funktion namens <code>get_bulk_validation_status<\/code>, die den Status des \u00fcbermittelten Validierungsauftrags pr\u00fcft. Die Antwort enth\u00e4lt einen Link zum Herunterladen der Validierungsergebnisse im CSV- und JSON-Format. In diesem Tutorial verwenden Sie JSON, um die Ergebnisse herunterzuladen und weiterzuverarbeiten.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Um die Validierungsergebnisse herunterzuladen, ruft die Funktion <code>get_bulk_validation_status<\/code> eine weitere Funktion namens <code>download_validation_results<\/code> auf. Das heruntergeladene Ergebnis wird als JSON-Datei im Verzeichnis <code>validation_results<\/code> abgelegt. Erstellen Sie dieses Verzeichnis im Verzeichnis <code>standalone_python_scripts<\/code> und f\u00fcgen Sie dann den folgenden Code, der diese beiden Funktionen definiert, in <code>bulk_email_validation.py<\/code> ein:<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                Python                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"In die Zwischenablage kopieren\" data-clipboard-success-label=\"Kopiert\" data-clipboard-error-label=\"Kopieren nicht m\u00f6glich\" data-tooltip=\"In die Zwischenablage kopieren\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"In die Zwischenablage kopieren\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                            <pre class=\"w-100 h-100 m-0 line-numbers language-Python\">\r\n                                <code id=\"code_0_content\" class=\"language-Python\">\r\n\r\n                                    def get_bulk_validation_status(list_name):rn    &quot;&quot;&quot;rn    This function checks the status of a bulk validation job and downloads the validation results.rnrn    :param list_name: The name of the mailing list for which the status is being checked.rn    :return: Validation results or None in case of failure.rn    &quot;&quot;&quot;rn    url = f&quot;{MAILGUN_API_URL}\/{list_name}&quot;rnrn    try:rn        # Send a GET request to Mailgun&#039;s API to fetch the job statusrn        response = requests.get(url, auth=(&quot;api&quot;, API_KEY))rnrn        # Check if the request was successfulrn        if response.status_code == 200:rn            logging.info(f&quot;Successfully retrieved validation status for {list_name}&quot;)rnrn            # Parse the JSON responsern            result = response.json()rnrn            # Fetch the download URL for JSON resultsrn            download_url = result.get(&quot;download_url&quot;, {}).get(&quot;json&quot;)rn            if download_url:rn                # Fetch and return the validation resultsrn                return download_validation_results(download_url)rn            else:rn                logging.info(&quot;Download URL not available.&quot;)rn                return Nonernrn        else:rn            logging.error(rn                f&quot;Error fetching job status: {response.status_code} {response.text}&quot;rn            )rn            return Nonernrn    except Exception as e:rn        logging.error(rn            f&quot;An error occurred while fetching bulk validation status: {str(e)}&quot;rn        )rn        return Nonernrndef download_validation_results(download_url):rn    &quot;&quot;&quot;rn    This function downloads and processes the bulk validation results from the provided URL.rnrn    :param download_url: The URL to download the validation results in JSON format.rn    :return: Parsed results or None in case of failure.rn    &quot;&quot;&quot;rn    try:rn        response = requests.get(download_url)rnrn        # Check if the request was successfulrn        if response.status_code == 200:rn            logging.info(&quot;Successfully downloaded validation results.&quot;)rnrn            with zipfile.ZipFile(io.BytesIO(response.content)) as zip_ref:rn                validation_results_path = os.path.join(rn                    os.getcwd(), &quot;validation_results&quot;rn                )rn                zip_ref.extractall(path=validation_results_path)rnrn            with zipfile.ZipFile(io.BytesIO(response.content)) as zip_ref:rn                for file in zip_ref.namelist():rn                    if file.endswith(&quot;.json&quot;):rn                        with zip_ref.open(file) as json_file:rn                            validation_results = json.load(json_file)rnrn            # Process the results (handle invalid emails, etc.)rn            process_validation_results(validation_results)rnrn            return validation_resultsrnrn        else:rn            logging.error(rn                f&quot;Error downloading results: {response.status_code} {response.text}&quot;rn            )rn            return Nonernrn    except Exception as e:rn        logging.error(rn            f&quot;An error occurred while downloading validation results: {str(e)}&quot;rn        )rn        return Nonern\r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\">Die Funktion sendet eine POST-Anfrage an die API von Mailgun, um den Massen-E-Mail-Validierungsprozess zu starten. Die Anfrage enth\u00e4lt die Datei mit den E-Mail-Adressen, die validiert werden sollen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Funktionen zum Pr\u00fcfen des Auftragsstatus und Herunterladen der Ergebnisse entwickeln<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Schreiben Sie nun im selben Skript <code>bulk_email_validation.py<\/code> eine weitere Funktion namens <code>get_bulk_validation_status<\/code>, die den Status des \u00fcbermittelten Validierungsauftrags pr\u00fcft. Die Antwort enth\u00e4lt einen Link zum Herunterladen der Validierungsergebnisse im CSV- und JSON-Format. In diesem Tutorial verwenden Sie JSON, um die Ergebnisse herunterzuladen und weiterzuverarbeiten.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Um die Validierungsergebnisse herunterzuladen, ruft die Funktion <code>get_bulk_validation_status<\/code> eine weitere Funktion namens <code>download_validation_results<\/code> auf. Das heruntergeladene Ergebnis wird als JSON-Datei im Verzeichnis <code>validation_results<\/code> abgelegt. Erstellen Sie dieses Verzeichnis im Verzeichnis <code>standalone_python_scripts<\/code> und f\u00fcgen Sie dann den folgenden Code, der diese beiden Funktionen definiert, in <code>bulk_email_validation.py<\/code> ein: <\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                Python                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"In die Zwischenablage kopieren\" data-clipboard-success-label=\"Kopiert\" data-clipboard-error-label=\"Kopieren nicht m\u00f6glich\" data-tooltip=\"In die Zwischenablage kopieren\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"In die Zwischenablage kopieren\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                            <pre class=\"w-100 h-100 m-0 line-numbers language-Python\">\r\n                                <code id=\"code_0_content\" class=\"language-Python\">\r\n\r\n                                    def get_bulk_validation_status(list_name):rn    &quot;&quot;&quot;rn    This function checks the status of a bulk validation job and downloads the validation results.rnrn    :param list_name: The name of the mailing list for which the status is being checked.rn    :return: Validation results or None in case of failure.rn    &quot;&quot;&quot;rn    url = f&quot;{MAILGUN_API_URL}\/{list_name}&quot;rnrn    try:rn        # Send a GET request to Mailgun&#039;s API to fetch the job statusrn        response = requests.get(url, auth=(&quot;api&quot;, API_KEY))rnrn        # Check if the request was successfulrn        if response.status_code == 200:rn            logging.info(f&quot;Successfully retrieved validation status for {list_name}&quot;)rnrn            # Parse the JSON responsern            result = response.json()rnrn            # Fetch the download URL for JSON resultsrn            download_url = result.get(&quot;download_url&quot;, {}).get(&quot;json&quot;)rn            if download_url:rn                # Fetch and return the validation resultsrn                return download_validation_results(download_url)rn            else:rn                logging.info(&quot;Download URL not available.&quot;)rn                return Nonernrn        else:rn            logging.error(rn                f&quot;Error fetching job status: {response.status_code} {response.text}&quot;rn            )rn            return Nonernrn    except Exception as e:rn        logging.error(rn            f&quot;An error occurred while fetching bulk validation status: {str(e)}&quot;rn        )rn        return Nonernrndef download_validation_results(download_url):rn    &quot;&quot;&quot;rn    This function downloads and processes the bulk validation results from the provided URL.rnrn    :param download_url: The URL to download the validation results in JSON format.rn    :return: Parsed results or None in case of failure.rn    &quot;&quot;&quot;rn    try:rn        response = requests.get(download_url)rnrn        # Check if the request was successfulrn        if response.status_code == 200:rn            logging.info(&quot;Successfully downloaded validation results.&quot;)rnrn            with zipfile.ZipFile(io.BytesIO(response.content)) as zip_ref:rn                validation_results_path = os.path.join(rn                    os.getcwd(), &quot;validation_results&quot;rn                )rn                zip_ref.extractall(path=validation_results_path)rnrn            with zipfile.ZipFile(io.BytesIO(response.content)) as zip_ref:rn                for file in zip_ref.namelist():rn                    if file.endswith(&quot;.json&quot;):rn                        with zip_ref.open(file) as json_file:rn                            validation_results = json.load(json_file)rnrn            # Process the results (handle invalid emails, etc.)rn            process_validation_results(validation_results)rnrn            return validation_resultsrnrn        else:rn            logging.error(rn                f&quot;Error downloading results: {response.status_code} {response.text}&quot;rn            )rn            return Nonernrn    except Exception as e:rn        logging.error(rn            f&quot;An error occurred while downloading validation results: {str(e)}&quot;rn        )rn        return Nonern\r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<h2 class=\"wp-block-heading\">Validierungsergebnisse parsen und verarbeiten<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Sobald Sie die Validierungsergebnisse heruntergeladen und darauf zugegriffen haben, m\u00fcssen Sie diese parsen und verarbeiten. Dieser Schritt ist entscheidend f\u00fcr die Identifizierung zustellbarer und unzustellbarer E-Mails.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">F\u00fcgen Sie den folgenden Code ein, um die Funktion in <code>bulk_email_validation.py<\/code> zu definieren, die diese beschriebene Aufgabe \u00fcbernimmt:<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                Python                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"In die Zwischenablage kopieren\" data-clipboard-success-label=\"Kopiert\" data-clipboard-error-label=\"Kopieren nicht m\u00f6glich\" data-tooltip=\"In die Zwischenablage kopieren\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"In die Zwischenablage kopieren\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                            <pre class=\"w-100 h-100 m-0 line-numbers language-Python\">\r\n                                <code id=\"code_0_content\" class=\"language-Python\">\r\n\r\n                                    def process_validation_results(results):rn    &quot;&quot;&quot;rn    This function processes the validation results and handles invalid and risky emails.rnrn    :param results: The JSON object containing the validation results.rn    &quot;&quot;&quot;rn    try:rn        count_of_deliverable_addresses: int = 0rn        emails_tobe_verified = set()rnrn        # Extract the results summaryrn        logging.info(f&quot;Total email addresses validated: {len(results)}&quot;)rnrn        for result in results:rn            # Access data within each dictionaryrn            deliverable = (rn                result[&quot;result&quot;] == &quot;deliverable&quot;rn            )  # Check if result is deliverablern            undeliverable = result[&quot;result&quot;] != &quot;deliverable&quot;rn            risk = result[&quot;risk&quot;]rnrn            # Count the number of deliverable addressesrn            if deliverable:rn                count_of_deliverable_addresses += 1rnrn            # Count the number of undeliverable addresses and add them to the list for verificationrn            if undeliverable:rn                emails_tobe_verified.add(result[&quot;address&quot;])rnrn            # Count the number of risky addresses and add them to the list for verificationrn            if risk != &quot;low&quot;:rn                emails_tobe_verified.add(result[&quot;address&quot;])rnrn        # Log the results summaryrn        logging.info(f&quot;Found {count_of_deliverable_addresses} deliverable emails&quot;)rnrn        if len(emails_tobe_verified) &gt; 0:rn            logging.warning(rn                &quot;Found some emails that need to be verified because of its risky or undeliverable state.&quot;rn            )rn            logging.warning(rn                &quot;Total emails to be verified: {}&quot;.format(len(emails_tobe_verified))rn            )rn            logging.warning(f&quot;Emails to be verified: {&#039;, &#039;.join(emails_tobe_verified)}&quot;)rnrn    except Exception as e:rn        logging.error(rn            f&quot;An error occurred while processing validation results: {str(e)}&quot;rn        )rn\r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\">Definieren Sie nun die Anweisungen zum Aufrufen dieser Funktionen mit dem folgenden Code:<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                Python                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"In die Zwischenablage kopieren\" data-clipboard-success-label=\"Kopiert\" data-clipboard-error-label=\"Kopieren nicht m\u00f6glich\" data-tooltip=\"In die Zwischenablage kopieren\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"In die Zwischenablage kopieren\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                            <pre class=\"w-100 h-100 m-0 line-numbers language-Python\">\r\n                                <code id=\"code_0_content\" class=\"language-Python\">\r\n\r\n                                    if __name__ == &quot;__main__&quot;:rnrn    if COMMAND == &quot;submit_job&quot;:rn        create_bulk_validation_job(LIST_NAME, FILE_PATH)rn    elif COMMAND == &quot;get_job_status&quot;:rn        get_bulk_validation_status(LIST_NAME)rn    else:rn        logging.error(&quot;Invalid command. Please use &#039;submit_job&#039; or &#039;get_job_status&#039;.&quot;)rn\r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<h2 class=\"wp-block-heading\">Das finale Skript<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Insgesamt \u00fcbernimmt das gesamte Skript <code>bulk_email_validation.py<\/code> die Hauptarbeit, indem es eine Massen-E-Mail-Validierungsanfrage postet, den Status der \u00fcbermittelten Validierungsauftragsanfrage abfragt und die Ergebnisse verarbeitet. Sobald Sie alle \u00c4nderungen vorgenommen haben, sollte Ihr Skript <code>bulk_email_validation.py<\/code> folgenderma\u00dfen aussehen: <a href=\"https:\/\/github.com\/rajkumarvenkatasamy\/bulk-email-validation-using-mailgun-and-python\/blob\/main\/standalone_python_scripts\/bulk_email_validation.py\" target=\"_tabs\" rel=\"noopener noreferrer\">dieser<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">W\u00e4hrend des gesamten Skripts stellt die Verwendung von try&#8230;except-Bl\u00f6cken sicher, dass etwaige Fehler w\u00e4hrend der API-Aufrufe verarbeitet werden. Dies ist besonders wichtig f\u00fcr Produktionsumgebungen, in denen unerwartete Probleme auftreten k\u00f6nnen, beispielsweise wenn Ihre Anwendung die Endpunkte des Mailgun-Service nicht erreichen kann oder wenn Sie versuchen, eine Validierungsauftragsanfrage mit demselben Listennamen zu \u00fcbermitteln. Die Fehlermeldungen und die Kommentare im Quellcode helfen dabei, die verschiedenen anderen verarbeiteten Szenarien zu erkl\u00e4ren.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn Sie die Validierungsauftragsanfrage mit demselben Listennamen erneut \u00fcbermitteln (im folgenden Abschnitt erfahren Sie, wie Sie das Skript ausf\u00fchren), ist das Skript auch f\u00fcr solche Szenarien ger\u00fcstet, indem es die entsprechende Fehlermeldung mit einer Beschreibung ausgibt:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>2024-09-28 07:34:39,081 - ERROR - create_bulk_validation_job - Error creating validation job: 409 {\"message\":\"List already exists.\"}<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn ein Netzwerkfehler zwischen Ihrer Anwendung und dem Mailgun-Service auftritt, k\u00f6nnen Sie einen Wiederholungsmechanismus implementieren. Sie k\u00f6nnen entweder einen eigenen erstellen oder eine Bibliothek verwenden wie <a href=\"https:\/\/tenacity.readthedocs.io\/en\/latest\/\" target=\"_tabs\" rel=\"noopener noreferrer\">tenacity<\/a> , um festzulegen, wie oft die Anfrage wiederholt werden soll, falls sie aufgrund vor\u00fcbergehender Verbindungsprobleme fehlschl\u00e4gt. Sie k\u00f6nnen auch weitere Fehlerbehandlungsszenarien implementieren, je nach den Anforderungen Ihres Projekts oder Unternehmens.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">An diesem Punkt haben Sie die Einrichtung des Projekts abgeschlossen und es ist an der Zeit, es auszuf\u00fchren.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Testen durch \u00dcbermitteln einer Massen-E-Mail-Validierungsauftragsanfrage<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Um das Skript zur \u00dcbermittlung der Massenvalidierungsauftragsanfrage auszuf\u00fchren, \u00f6ffnen Sie ein Terminal und wechseln Sie in das Verzeichnis <code>standalone_python_scripts<\/code>. F\u00fchren Sie den folgenden Befehl aus:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>python bulk_email_validation.py<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sie sollten eine Ausgabe sehen, die angibt, dass die Auftragsanfrage erfolgreich an den Mailgun-Service \u00fcbermittelt wurde:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>2024-09-28 19:47:34,012 - INFO - create_bulk_validation_job - Bulk validation job created successfully for bulk_mailing_list_validation_1<\/code><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Testen durch Abrufen des Status des Massen-E-Mail-Validierungsauftrags<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Manchmal nimmt der \u00fcbermittelte Auftrag je nach Volumen der zu validierenden E-Mail-Adressen unterschiedlich viel Zeit in Anspruch. Um den Status der Auftragsanfrage abzurufen und die Ergebnisse nach Abschluss der Anfrage zu verarbeiten, bearbeiten Sie den Code von config.py, um die Konfiguration von COMMAND auf den Wert <code>get_job_status<\/code> zu aktualisieren. F\u00fchren Sie anschlie\u00dfend den folgenden Befehl aus, um diese Aufgabe auszuf\u00fchren:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>python bulk_email_validation.py<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sie sollten eine Ausgabe sehen, die angibt, dass der Validierungsauftrag abgeschlossen ist, die Ergebnisse heruntergeladen und anschlie\u00dfend verarbeitet werden:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>2024-09-28 19:48:07,723 - INFO - get_bulk_validation_status - Successfully retrieved validation status for bulk_mailing_list_validation_1<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>2024-09-28 19:48:08,375 - INFO - download_validation_results - Successfully downloaded validation results.<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>2024-09-28 19:48:08,378 - INFO - process_validation_results - Total email addresses validated: 191<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>2024-09-28 19:48:08,378 - INFO - process_validation_results - Found 178 deliverable emails<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>2024-09-28 19:48:08,378 - WARNING - process_validation_results - Found some emails that need to be verified because of its risky or undeliverable state.<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>2024-09-28 19:48:08,378 - WARNING - process_validation_results - Total emails to be verified: 13<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>2024-09-28 19:48:08,378 - WARNING - process_validation_results - Emails to be verified: <\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>dummy_email@dummydomain1.com, dummy_email@dummydomain2.com, hellojohnsemail123@gmail.com, dummy_email@dummydomain3.com, non_existent_email_id_123456789@gmail.com, dummy_email@dummydomain.com, dummy_email@dummydomain4.com, dummy_email@dummydomain5.com, dummy_email@dummydomain6.com, dummy_email@dummydomain7.com, dummy_email@dummydomain8.com, test_email@testemaildomain.com, electronix84@gmail.com<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Diese Ausgabe zeigt an, dass von 191 zur Validierung \u00fcbermittelten E-Mail-Adressen 178 als zustellbar eingestuft werden und die restlichen 13 nicht.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Das Skript identifiziert die zu verifizierenden E-Mail-Adressen, indem es die Antwort der Mailgun-APIs parst und die Liste in der Ausgabe anzeigt. Es liegt nun an Ihnen zu entscheiden, welche Ma\u00dfnahmen Sie basierend auf Ihren Projekt- oder Gesch\u00e4ftsanforderungen ergreifen m\u00f6chten.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Massen-E-Mail-Validierung in eine Django-Anwendung integrieren<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Da Sie nun diese Techniken erlernt haben, k\u00f6nnen Sie sie in Ihrer Django-Anwendung anwenden, indem Sie Endpunkte erstellen, um eine E-Mail-Liste mit Massen-E-Mail-Adressen hochzuladen und diese zu validieren.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sie k\u00f6nnen darauf zur\u00fcckgreifen oder klonen <a href=\"https:\/\/github.com\/rajkumarvenkatasamy\/bulk-email-validation-using-mailgun-and-python.git\" target=\"_tabs\" rel=\"noopener noreferrer\">diesem GitHub-Repository<\/a> , wenn Sie experimentieren und dem Ablauf folgen m\u00f6chten. Das Verzeichnis bulk_email_validation enth\u00e4lt den Quellcode des Django-Projekts. Die folgenden Dateien sind die wichtigsten in diesem Projekt:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>In der <a href=\"https:\/\/github.com\/rajkumarvenkatasamy\/bulk-email-validation-using-mailgun-and-python\/blob\/main\/requirements.txt\" target=\"_tabs\" rel=\"noopener noreferrer\">Datei requirements.txt<\/a> enth\u00e4lt die f\u00fcr dieses Django-Projekt erforderlichen Abh\u00e4ngigkeiten.<\/li>\n\n\n\n<li>In der <a href=\"https:\/\/github.com\/rajkumarvenkatasamy\/bulk-email-validation-using-mailgun-and-python\/blob\/main\/bulk_email_validation\/app\/config.py\" target=\"_tabs\" rel=\"noopener noreferrer\">Datei config.py<\/a> enth\u00e4lt die Konfiguration f\u00fcr den Mailgun-Service.<\/li>\n\n\n\n<li>In der <a href=\"https:\/\/github.com\/rajkumarvenkatasamy\/bulk-email-validation-using-mailgun-and-python\/blob\/main\/bulk_email_validation\/app\/views.py\" target=\"_tabs\" rel=\"noopener noreferrer\">Datei views.py<\/a> enth\u00e4lt die Logik zur Verarbeitung der Anfrage und der Antworten in Bezug auf Endpunkte zur Massen-E-Mail-Validierung.<\/li>\n\n\n\n<li>In der <a href=\"https:\/\/github.com\/rajkumarvenkatasamy\/bulk-email-validation-using-mailgun-and-python\/blob\/main\/bulk_email_validation\/app\/serializers.py\" target=\"_tabs\" rel=\"noopener noreferrer\">Datei serializers.py<\/a> enth\u00e4lt Klassen, die dabei helfen, Daten zwischen Python-Objekten und Formaten wie JSON zu \u00fcbersetzen, sodass das Senden oder Empfangen von Daten f\u00fcr Massen-E-Mail-Validierungs-APIs mit nur wenigen Codezeilen vereinfacht wird.<\/li>\n\n\n\n<li>In der <a href=\"https:\/\/github.com\/rajkumarvenkatasamy\/bulk-email-validation-using-mailgun-and-python\/blob\/main\/bulk_email_validation\/urls.py\" target=\"_tabs\" rel=\"noopener noreferrer\">Datei urls.py<\/a> enth\u00e4lt die beiden Endpunkte f\u00fcr die Massen-E-Mail-Validierung. Ein Endpunkt dient der \u00dcbermittlung der Massen-E-Mail-Validierungsauftragsanfrage; der andere dient dem Abrufen des Status und der Verarbeitung der Ergebnisse.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Die nachfolgenden Screenshots sollen Ihnen helfen, die Endpunkte zu verstehen, die diese Django-Anwendung behandelt, und die Ausgabe, die sie generieren kann.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Der erste Screenshot zeigt die POST-Anfrage mit Optionen zum Hochladen der E-Mail-Listendatei und Festlegen eines Namens f\u00fcr die E-Mail-Liste, zusammen mit der Antwort, die nach erfolgreicher \u00dcbermittlung der Massen-E-Mail-Validierungsauftragsanfrage empfangen wurde:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" class=\"wp-image-4082\" width=\"1980\" height=\"892\" src=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2025-01-07_at_10.19.13_AM.png\" alt=\"validation job response after its completion:\" srcset=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2025-01-07_at_10.19.13_AM.png 1980w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2025-01-07_at_10.19.13_AM-300x135.png 300w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2025-01-07_at_10.19.13_AM-768x346.png 768w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2025-01-07_at_10.19.13_AM-1024x461.png 1024w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2025-01-07_at_10.19.13_AM-1536x692.png 1536w\" sizes=\"(max-width: 1980px) 100vw, 1980px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Der zweite Screenshot zeigt den erfolgreichen Abruf der Antwort des Validierungsauftrags nach dessen Abschluss:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" class=\"wp-image-4083\" width=\"1964\" height=\"1156\" src=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2025-01-07_at_10.19.20_AM.png\" alt=\"POST request  Screen\" srcset=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2025-01-07_at_10.19.20_AM.png 1964w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2025-01-07_at_10.19.20_AM-300x177.png 300w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2025-01-07_at_10.19.20_AM-768x452.png 768w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2025-01-07_at_10.19.20_AM-1024x603.png 1024w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2025-01-07_at_10.19.20_AM-1536x904.png 1536w\" sizes=\"(max-width: 1964px) 100vw, 1964px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Sie k\u00f6nnen eine Frontend-Anwendung mit einer beliebigen Frontend-Technologie entwickeln lassen und diese Django-Anwendungsendpunkte aufrufen, um Ihr Ziel der Massen-E-Mail-Validierung zu erreichen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Zusammenfassung<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In diesem Tutorial haben Sie gelernt, wie Sie die E-Mail-Validierungs-API f\u00fcr Massen-E-Mails von Mailgun in Ihre Python-Anwendungen integrieren, um die Genauigkeit und Zustellbarkeit Ihrer E-Mail-Listen sicherzustellen. Von der Einrichtung Ihres Mailgun-Kontos, der Einholung des API-Schl\u00fcssels und dessen sicherer Handhabung bis hin zur Implementierung der Massenvalidierung, dem Senden von POST- und GET-Anfragen sowie der Verarbeitung der Ergebnisse wissen Sie nun, wie Sie den E-Mail-Verifizierungsprozess automatisieren. Au\u00dferdem haben Sie untersucht, wie Sie ung\u00fcltige E-Mails verwalten, mit h\u00e4ufigen Fehlern umgehen und die E-Mail-Validierung in gr\u00f6\u00dfere Webanwendungen wie Django integrieren. Der gesamte f\u00fcr dieses Tutorial vorgestellte Quellcode ist verf\u00fcgbar in <a href=\"https:\/\/github.com\/rajkumarvenkatasamy\/bulk-email-validation-using-mailgun-and-python\/tree\/main\" target=\"_tabs\" rel=\"noopener noreferrer\">diesem GitHub-Repo<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn Sie diese Schritte befolgen, identifizieren Sie zustellbare E-Mails aus Ihrer gro\u00dfen E-Mail-Liste effektiv und verbessern so die Qualit\u00e4t Ihrer E-Mail-Kampagnen, reduzieren Bounce-Raten und sch\u00fctzen Ihre Absenderreputation. Die Nutzung der leistungsstarken E-Mail-Validierungs-API f\u00fcr Massen-E-Mails von Mailgun rationalisiert nicht nur diesen Prozess, sondern stellt auch sicher, dass Ihre E-Mail-Zustellung zuverl\u00e4ssiger und effizienter wird. W\u00e4hrend Sie Ihre E-Mail-Strategie weiter optimieren, werfen Sie einen Blick auf <a href=\"https:\/\/www.mailgun.com\/de\/\" target=\"_tabs\" rel=\"noopener noreferrer\">Mailgun<\/a>, erkunden Sie die verschiedenen Produktangebote und nutzen Sie sie, um Ihre E-Mail-Kampagnen weiter zu optimieren und deren Wirkung zu maximieren.<\/p>\n\n\n\r\n    <aside data-content-type=\"longform\"  class=\"banner-block longform-spacings rounded-lg shadow-lg px-5 py-6 px-md-6 py-md-7 p-lg-7 bg-light\" data-theme=\"dark\" aria-labelledby=\"banner-block-block_9f91e253bec988691f8e9331efcb1972\">\r\n                            <p class=\"h4 text-accent fw-bold\" id=\"banner-block-block_9f91e253bec988691f8e9331efcb1972\">\r\n                Fachkundige Beratung            <\/p>\r\n                            <div class=\"mb-0 text-body-color\">\r\n                                    <div class=\"content-body mb-0 text-body-color\">Zustellbarkeit erfordert ein gewisses Ma\u00df an Kompetenz. Wenn Sie Hilfe bei der Bew\u00e4ltigung der Komplexit\u00e4t der Posteingangsplatzierung ben\u00f6tigen, fragen Sie nach den Zustellbarkeits-Services von Sinch Mailgun. Wir bieten dedizierte technische Experten, regelm\u00e4\u00dfiges Reporting, benutzerdefinierte Zustellbarkeitsstrategien und Zugang zu hilfreichen Tools.<\/div>\r\n                            <\/div>\r\n        \r\n        <div class=\"text-start mt-5\"><a href=\"https:\/\/www.mailgun.com\/de\/loesungen\/services-zur-optimierung-der-zustellbarkeit-lp\/\"  class=\"btn btn-secondary\" >Talk to a strategist<\/a><\/div>\r\n    <\/aside>\r\n\r\n","protected":false},"excerpt":{"rendered":"<p>Erfahren Sie, wie Sie die E-Mail-Validierungs-API von Mailgun f\u00fcr Massen-E-Mails mit Python integrieren. Dieser Leitfaden behandelt die Einrichtung, die sichere API-Nutzung und die effiziente Verifizierung von E-Mail-Listen.<\/p>\n","protected":false},"author":19,"featured_media":3952,"menu_order":0,"template":"","meta":{"_acf_changed":false,"footnotes":""},"blog_category":[19],"class_list":["post-20223","blog","type-blog","status-publish","has-post-thumbnail","hentry","blog_category-dev-life"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>E-Mails verifizieren mit Python und Mailgun-API: Anleitung - Transactional Email API Service For Developers | Mailgun<\/title>\n<meta name=\"description\" content=\"Ung\u00fcltige E-Mails k\u00f6nnen Ihrer Reputation schaden. Erfahren Sie, wie Sie mit Python 3.9+ und Mailguns E-Mail-Validierungs-API f\u00fcr Massen-E-Mails E-Mail-Listen verifizieren, die Zustellbarkeit verbessern und die Domain-Reputation sch\u00fctzen.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.mailgun.com\/de\/blog\/dev-life\/emails-verifizieren-mit-python-und-der-mailgun-api\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"E-Mails verifizieren mit Python und Mailgun-API: Anleitung - Transactional Email API Service For Developers | Mailgun\" \/>\n<meta property=\"og:description\" content=\"Ung\u00fcltige E-Mails k\u00f6nnen Ihrer Reputation schaden. Erfahren Sie, wie Sie mit Python 3.9+ und Mailguns E-Mail-Validierungs-API f\u00fcr Massen-E-Mails E-Mail-Listen verifizieren, die Zustellbarkeit verbessern und die Domain-Reputation sch\u00fctzen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.mailgun.com\/de\/blog\/dev-life\/emails-verifizieren-mit-python-und-der-mailgun-api\/\" \/>\n<meta property=\"og:site_name\" content=\"Transactional Email API Service For Developers | Mailgun\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-14T22:53:59+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-Dev-Life.png\" \/>\n\t<meta property=\"og:image:width\" content=\"720\" \/>\n\t<meta property=\"og:image:height\" content=\"448\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"10\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/de\\\/blog\\\/dev-life\\\/emails-verifizieren-mit-python-und-der-mailgun-api\\\/\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/de\\\/blog\\\/dev-life\\\/emails-verifizieren-mit-python-und-der-mailgun-api\\\/\",\"name\":\"E-Mails verifizieren mit Python und Mailgun-API: Anleitung - Transactional Email API Service For Developers | Mailgun\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/de\\\/blog\\\/dev-life\\\/emails-verifizieren-mit-python-und-der-mailgun-api\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/de\\\/blog\\\/dev-life\\\/emails-verifizieren-mit-python-und-der-mailgun-api\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/MG-Blog-Dev-Life.png\",\"datePublished\":\"2025-01-07T00:00:00+00:00\",\"dateModified\":\"2026-09-14T22:53:59+00:00\",\"description\":\"Ung\u00fcltige E-Mails k\u00f6nnen Ihrer Reputation schaden. Erfahren Sie, wie Sie mit Python 3.9+ und Mailguns E-Mail-Validierungs-API f\u00fcr Massen-E-Mails E-Mail-Listen verifizieren, die Zustellbarkeit verbessern und die Domain-Reputation sch\u00fctzen.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/de\\\/blog\\\/dev-life\\\/emails-verifizieren-mit-python-und-der-mailgun-api\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.mailgun.com\\\/de\\\/blog\\\/dev-life\\\/emails-verifizieren-mit-python-und-der-mailgun-api\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/de\\\/blog\\\/dev-life\\\/emails-verifizieren-mit-python-und-der-mailgun-api\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/MG-Blog-Dev-Life.png\",\"contentUrl\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/MG-Blog-Dev-Life.png\",\"width\":720,\"height\":448},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/de\\\/blog\\\/dev-life\\\/emails-verifizieren-mit-python-und-der-mailgun-api\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.mailgun.com\\\/de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog\",\"item\":\"https:\\\/\\\/www.mailgun.com\\\/de\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"E-Mails verifizieren mit Python 3.9+ und der Mailgun-API\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/de\\\/#website\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/de\\\/\",\"name\":\"Transactional Email API Service For Developers | Mailgun\",\"description\":\"Leistungsstarke Transaktions-E-Mail-APIs, mit denen Sie E-Mails senden, empfangen und nachverfolgen k\u00f6nnen, speziell f\u00fcr Entwickler konzipiert. Erfahren Sie noch heute mehr!\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.mailgun.com\\\/de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/de\\\/#organization\",\"name\":\"Transactional Email API Service For Developers | Mailgun\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/cropped-android-chrome-512x512-1.png\",\"contentUrl\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/cropped-android-chrome-512x512-1.png\",\"width\":512,\"height\":512,\"caption\":\"Transactional Email API Service For Developers | Mailgun\"},\"image\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/de\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"E-Mails verifizieren mit Python und Mailgun-API: Anleitung - Transactional Email API Service For Developers | Mailgun","description":"Ung\u00fcltige E-Mails k\u00f6nnen Ihrer Reputation schaden. Erfahren Sie, wie Sie mit Python 3.9+ und Mailguns E-Mail-Validierungs-API f\u00fcr Massen-E-Mails E-Mail-Listen verifizieren, die Zustellbarkeit verbessern und die Domain-Reputation sch\u00fctzen.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.mailgun.com\/de\/blog\/dev-life\/emails-verifizieren-mit-python-und-der-mailgun-api\/","og_locale":"de_DE","og_type":"article","og_title":"E-Mails verifizieren mit Python und Mailgun-API: Anleitung - Transactional Email API Service For Developers | Mailgun","og_description":"Ung\u00fcltige E-Mails k\u00f6nnen Ihrer Reputation schaden. Erfahren Sie, wie Sie mit Python 3.9+ und Mailguns E-Mail-Validierungs-API f\u00fcr Massen-E-Mails E-Mail-Listen verifizieren, die Zustellbarkeit verbessern und die Domain-Reputation sch\u00fctzen.","og_url":"https:\/\/www.mailgun.com\/de\/blog\/dev-life\/emails-verifizieren-mit-python-und-der-mailgun-api\/","og_site_name":"Transactional Email API Service For Developers | Mailgun","article_modified_time":"2026-09-14T22:53:59+00:00","og_image":[{"width":720,"height":448,"url":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-Dev-Life.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"10\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.mailgun.com\/de\/blog\/dev-life\/emails-verifizieren-mit-python-und-der-mailgun-api\/","url":"https:\/\/www.mailgun.com\/de\/blog\/dev-life\/emails-verifizieren-mit-python-und-der-mailgun-api\/","name":"E-Mails verifizieren mit Python und Mailgun-API: Anleitung - Transactional Email API Service For Developers | Mailgun","isPartOf":{"@id":"https:\/\/www.mailgun.com\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.mailgun.com\/de\/blog\/dev-life\/emails-verifizieren-mit-python-und-der-mailgun-api\/#primaryimage"},"image":{"@id":"https:\/\/www.mailgun.com\/de\/blog\/dev-life\/emails-verifizieren-mit-python-und-der-mailgun-api\/#primaryimage"},"thumbnailUrl":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-Dev-Life.png","datePublished":"2025-01-07T00:00:00+00:00","dateModified":"2026-09-14T22:53:59+00:00","description":"Ung\u00fcltige E-Mails k\u00f6nnen Ihrer Reputation schaden. Erfahren Sie, wie Sie mit Python 3.9+ und Mailguns E-Mail-Validierungs-API f\u00fcr Massen-E-Mails E-Mail-Listen verifizieren, die Zustellbarkeit verbessern und die Domain-Reputation sch\u00fctzen.","breadcrumb":{"@id":"https:\/\/www.mailgun.com\/de\/blog\/dev-life\/emails-verifizieren-mit-python-und-der-mailgun-api\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.mailgun.com\/de\/blog\/dev-life\/emails-verifizieren-mit-python-und-der-mailgun-api\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.mailgun.com\/de\/blog\/dev-life\/emails-verifizieren-mit-python-und-der-mailgun-api\/#primaryimage","url":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-Dev-Life.png","contentUrl":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-Dev-Life.png","width":720,"height":448},{"@type":"BreadcrumbList","@id":"https:\/\/www.mailgun.com\/de\/blog\/dev-life\/emails-verifizieren-mit-python-und-der-mailgun-api\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.mailgun.com\/de\/"},{"@type":"ListItem","position":2,"name":"Blog","item":"https:\/\/www.mailgun.com\/de\/blog\/"},{"@type":"ListItem","position":3,"name":"E-Mails verifizieren mit Python 3.9+ und der Mailgun-API"}]},{"@type":"WebSite","@id":"https:\/\/www.mailgun.com\/de\/#website","url":"https:\/\/www.mailgun.com\/de\/","name":"Transactional Email API Service For Developers | Mailgun","description":"Leistungsstarke Transaktions-E-Mail-APIs, mit denen Sie E-Mails senden, empfangen und nachverfolgen k\u00f6nnen, speziell f\u00fcr Entwickler konzipiert. Erfahren Sie noch heute mehr!","publisher":{"@id":"https:\/\/www.mailgun.com\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.mailgun.com\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/www.mailgun.com\/de\/#organization","name":"Transactional Email API Service For Developers | Mailgun","url":"https:\/\/www.mailgun.com\/de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.mailgun.com\/de\/#\/schema\/logo\/image\/","url":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/06\/cropped-android-chrome-512x512-1.png","contentUrl":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/06\/cropped-android-chrome-512x512-1.png","width":512,"height":512,"caption":"Transactional Email API Service For Developers | Mailgun"},"image":{"@id":"https:\/\/www.mailgun.com\/de\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.mailgun.com\/de\/wp-json\/wp\/v2\/blog\/20223","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mailgun.com\/de\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/www.mailgun.com\/de\/wp-json\/wp\/v2\/types\/blog"}],"author":[{"embeddable":true,"href":"https:\/\/www.mailgun.com\/de\/wp-json\/wp\/v2\/users\/19"}],"version-history":[{"count":2,"href":"https:\/\/www.mailgun.com\/de\/wp-json\/wp\/v2\/blog\/20223\/revisions"}],"predecessor-version":[{"id":20276,"href":"https:\/\/www.mailgun.com\/de\/wp-json\/wp\/v2\/blog\/20223\/revisions\/20276"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mailgun.com\/de\/wp-json\/wp\/v2\/media\/3952"}],"wp:attachment":[{"href":"https:\/\/www.mailgun.com\/de\/wp-json\/wp\/v2\/media?parent=20223"}],"wp:term":[{"taxonomy":"blog_category","embeddable":true,"href":"https:\/\/www.mailgun.com\/de\/wp-json\/wp\/v2\/blog_category?post=20223"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}