Dev Life

E-Mails verifizieren mit Python 3.9+ und der Mailgun-API

Erfahren Sie, wie Sie die E-Mail-Validierungs-API von Mailgun für Massen-E-Mails mit Python integrieren. Dieser Leitfaden behandelt die Einrichtung, die sichere API-Nutzung und die effiziente Verifizierung von E-Mail-Listen.
Bild für E-Mails verifizieren mit Python 3.9+ und der Mailgun-API

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ützen. Ungültige oder falsch getippte E-Mail-Adressen können zu höheren Bounce-Raten führen, 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.

Was ist die E-Mail-Validierungs-API für Massen-E-Mails von Mailgun?

Die E-Mail-Validierungs-API für Massen-E-Mails von Mailgun 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äufige Probleme wie Syntaxfehler, Wegwerf-E-Mails oder Adressen mit inaktiven E-Mail-Servern prüfen. Die API liefert detaillierte Ergebnisse für jede E-Mail, sodass Sie problemlos die entsprechende Aktion ergreifen können.

In diesem Tutorial erfahren Sie, wie Sie die E-Mail-Validierungs-API für 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ür-Schritt-Anleitung zur effizienten Verifizierung großer E-Mail-Listen.

Massen-E-Mail-Validierung mit Python und der Mailgun-API implementieren

Bevor Sie mit diesem Tutorial beginnen, stellen Sie sicher, dass Sie über Folgendes verfügen:

  • Ein grundlegendes Verständnis der Python-Programmierung
  • Python 3.9+
  • Ein Mailgun-Konto; für dieses Tutorial ist ein kostenpflichtiges Konto erforderlich
  • Erfahrung in der Anwendungsentwicklung mit dem Django REST framework

Dieses Tutorial verwendet das Windows-Betriebssystem. Alle Anweisungen sollten auch für Linux und macOS funktionieren, achten Sie jedoch darauf, die Pfadtrennzeichen oder Syntaxreferenzen des Betriebssystems bei Bedarf anzupassen.

Mailgun für die Massen-E-Mail-Validierung einrichten

Um zu beginnen, melden Sie sich bei Ihrem Mailgun-Konto an und navigieren Sie zum Dashboard. Scrollen Sie nach unten und wählen Sie die Option API keys:

API keys option scrfeen

Klicken Sie auf Add new key, um einen neuen API-Schlüssel hinzuzufügen:

Add new key to add a new API key screen

Geben Sie eine Beschreibung ein (z. B. „Bulk Email Validation API Key“) und klicken Sie auf Create Key:

Create Key screen

Sobald der API-Schlüssel erstellt ist, kopieren Sie die Schlüsselinformationen, da Sie diese später noch benötigen. Falls Sie vergessen, die Informationen zu kopieren, oder den Schlüssel verlieren, ist das kein Problem: Sie können Ihren API-Schlüssel löschen und einen neuen erstellen.

Projektverzeichnis und Abhängigkeiten einrichten

Erstellen Sie ein Projektverzeichnis auf Ihrem Rechner und wechseln Sie in dieses Verzeichnis. Öffnen Sie anschließend ein Terminal, dessen Pfad auf das aktuelle Projektverzeichnis eingestellt ist, und führen Sie den folgenden Befehl aus, um eine virtuelle Python-Umgebung für dieses Tutorial zu erstellen:

python -m venv venv

Aktivieren Sie die virtuelle Umgebung:

venvScriptsactivate

Installieren Sie dann die Requests-Bibliothek, die für die Interaktion mit den Mailgun-Endpunkten verwendet wird:

pip install requests

Python-Projekt und Konfigurationsskript erstellen

Sobald Sie Ihre virtuelle Umgebung aktiviert haben, erstellen Sie im Projektverzeichnis ein neues Verzeichnis namens standalone_python_scripts. Dort werden Sie die Python-Module entwickeln, die für die Massen-E-Mail-Validierung über die Mailgun-Endpunkte erforderlich sind.

Erstellen Sie in diesem neuen Verzeichnis eine neue Python-Datei namens config.py und fügen Sie den folgenden Code ein, um die eigenständige Python-Skript-Anwendung zu konfigurieren:

                                

                                    import osrnrn# Retrieve the API key from the environment variablernrnAPI_KEY = os.getenv("MAILGUN_API_KEY")rnrn# Mailgun API base URLrnrnMAILGUN_API_URL = "https://api.mailgun.net/v4/address/validate/bulk"rnrnLIST_NAME = "bulk_mailing_list_validation_1"rnrnFILE_PATH = "mailing_list.csv"rnrnCOMMAND = "submit_job" # Possible values are "submit_job" and "get_job_status"rn
                                
                            

Dieses Config-Modul enthält die Konfigurationsvariablen, die für die Durchführung der Massen-E-Mail-Validierungsanfrage erforderlich sind.

Richten Sie eine neue Umgebungsvariable, MAILGUN_API_KEY, auf Ihrem Host-Rechner ein, indem Sie den folgenden Befehl ausführen:

SET MAILGUN_API_KEY=

Dadurch wird der API-Schlüssel zugewiesen, den Sie zuvor bei der Einrichtung Ihres Mailgun-Kontos generiert haben.

Wenn Sie Linux oder macOS nutzen, führen Sie den folgenden Befehl aus:

export MAILGUN_API_KEY=

Indem Sie den API-Schlüssel in einer Umgebungsvariablen speichern und nicht fest in der Konfigurationsdatei codieren, bleiben vertrauliche Informationen geschützt.

Belassen Sie die Werte der anderen Variablen vorerst so, wie sie sind. Die Variable LIST_NAME enthält den Bezeichner für Ihre zu validierende E-Mail-Liste. FILE_PATH enthält den Pfad zur Eingabe-CSV-Datei, die die Liste der zu validierenden E-Mails enthält.

Datei für Ihre E-Mail-Liste vorbereiten

Da das Konfigurationsskript nun über die Variable FILE_PATH auf den Dateipfad einer E-Mail-Liste verweist, benötigen Sie eine tatsächliche E-Mail-Liste mit E-Mail-Adressen zum Validieren. Erstellen Sie eine Datei namens mailing_list.csv im standalone_python_scripts-Verzeichnis und fügen Sie für den Anfang einige Beispiel-E-Mail-Adressen ein:

email
dummy_email@dummydomain.com
test_email@testemaildomain.com
non_existent_email_id_123456789@gmail.com
hellojohnsemail123@gmail.com

Die hier verwendeten E-Mail-Adressen sind nicht gültig. Sie können im selben Format weitere gültige oder ungültige Adressen aus Ihrer eigenen gewünschten Liste von E-Mail-Adressen hinzufügen.

Massenvalidierungsauftrag erstellen

Da die E-Mail-Liste nun vorliegt und die Konfiguration für den Validierungsprozess abgeschlossen ist, ist es an der Zeit, eine Funktion zur Erstellung eines Massen-E-Mail-Validierungsauftrags mit Mailgun einzurichten.

Erstellen Sie im selben Verzeichnis eine Python-Skriptdatei namens bulk_email_validation.py und definieren Sie eine Funktion create_bulk_validation_job, die zwei Parameter verwendet: list_name (Name der E-Mail-Liste) und file_path (Pfad zur Datei mit den E-Mails):

                                

                                    def create_bulk_validation_job(list_name, file_path):rn    """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    """rn    url = f"{MAILGUN_API_URL}/{list_name}"rnrn    try:rn        # Send a POST request with the file to Mailgun's APIrn        with open(file_path, "rb") as file_data:rn            response = requests.post(rn                url, auth=("api", API_KEY), files={"file": file_data}rn            )rnrn        # Check if the request was successfulrn        if response.status_code == 202:rn            logging.info(f"Bulk validation job created successfully for {list_name}")rn        else:rn            logging.error(rn                f"Error creating validation job: {response.status_code} {response.text}"rn            )rnrn        return response.json()rnrn    except Exception as e:rn        logging.error(f"An error occurred while creating bulk validation job: {str(e)}")rn        return Nonern
                                
                            

Die Funktion sendet eine POST-Anfrage an die API von Mailgun, um den Massen-E-Mail-Validierungsprozess zu starten. Die Anfrage enthält die Datei mit den E-Mail-Adressen, die validiert werden sollen.

Funktionen zum Prüfen des Auftragsstatus und Herunterladen der Ergebnisse entwickeln

Schreiben Sie nun im selben Skript bulk_email_validation.py eine weitere Funktion namens get_bulk_validation_status, die den Status des übermittelten Validierungsauftrags prüft. Die Antwort enthält einen Link zum Herunterladen der Validierungsergebnisse im CSV- und JSON-Format. In diesem Tutorial verwenden Sie JSON, um die Ergebnisse herunterzuladen und weiterzuverarbeiten.

Um die Validierungsergebnisse herunterzuladen, ruft die Funktion get_bulk_validation_status eine weitere Funktion namens download_validation_results auf. Das heruntergeladene Ergebnis wird als JSON-Datei im Verzeichnis validation_results abgelegt. Erstellen Sie dieses Verzeichnis im Verzeichnis standalone_python_scripts und fügen Sie dann den folgenden Code, der diese beiden Funktionen definiert, in bulk_email_validation.py ein:

                                

                                    def get_bulk_validation_status(list_name):rn    """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    """rn    url = f"{MAILGUN_API_URL}/{list_name}"rnrn    try:rn        # Send a GET request to Mailgun's API to fetch the job statusrn        response = requests.get(url, auth=("api", API_KEY))rnrn        # Check if the request was successfulrn        if response.status_code == 200:rn            logging.info(f"Successfully retrieved validation status for {list_name}")rnrn            # Parse the JSON responsern            result = response.json()rnrn            # Fetch the download URL for JSON resultsrn            download_url = result.get("download_url", {}).get("json")rn            if download_url:rn                # Fetch and return the validation resultsrn                return download_validation_results(download_url)rn            else:rn                logging.info("Download URL not available.")rn                return Nonernrn        else:rn            logging.error(rn                f"Error fetching job status: {response.status_code} {response.text}"rn            )rn            return Nonernrn    except Exception as e:rn        logging.error(rn            f"An error occurred while fetching bulk validation status: {str(e)}"rn        )rn        return Nonernrndef download_validation_results(download_url):rn    """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    """rn    try:rn        response = requests.get(download_url)rnrn        # Check if the request was successfulrn        if response.status_code == 200:rn            logging.info("Successfully downloaded validation results.")rnrn            with zipfile.ZipFile(io.BytesIO(response.content)) as zip_ref:rn                validation_results_path = os.path.join(rn                    os.getcwd(), "validation_results"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(".json"):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"Error downloading results: {response.status_code} {response.text}"rn            )rn            return Nonernrn    except Exception as e:rn        logging.error(rn            f"An error occurred while downloading validation results: {str(e)}"rn        )rn        return Nonern
                                
                            

Die Funktion sendet eine POST-Anfrage an die API von Mailgun, um den Massen-E-Mail-Validierungsprozess zu starten. Die Anfrage enthält die Datei mit den E-Mail-Adressen, die validiert werden sollen.

Funktionen zum Prüfen des Auftragsstatus und Herunterladen der Ergebnisse entwickeln

Schreiben Sie nun im selben Skript bulk_email_validation.py eine weitere Funktion namens get_bulk_validation_status, die den Status des übermittelten Validierungsauftrags prüft. Die Antwort enthält einen Link zum Herunterladen der Validierungsergebnisse im CSV- und JSON-Format. In diesem Tutorial verwenden Sie JSON, um die Ergebnisse herunterzuladen und weiterzuverarbeiten.

Um die Validierungsergebnisse herunterzuladen, ruft die Funktion get_bulk_validation_status eine weitere Funktion namens download_validation_results auf. Das heruntergeladene Ergebnis wird als JSON-Datei im Verzeichnis validation_results abgelegt. Erstellen Sie dieses Verzeichnis im Verzeichnis standalone_python_scripts und fügen Sie dann den folgenden Code, der diese beiden Funktionen definiert, in bulk_email_validation.py ein:

                                

                                    def get_bulk_validation_status(list_name):rn    """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    """rn    url = f"{MAILGUN_API_URL}/{list_name}"rnrn    try:rn        # Send a GET request to Mailgun's API to fetch the job statusrn        response = requests.get(url, auth=("api", API_KEY))rnrn        # Check if the request was successfulrn        if response.status_code == 200:rn            logging.info(f"Successfully retrieved validation status for {list_name}")rnrn            # Parse the JSON responsern            result = response.json()rnrn            # Fetch the download URL for JSON resultsrn            download_url = result.get("download_url", {}).get("json")rn            if download_url:rn                # Fetch and return the validation resultsrn                return download_validation_results(download_url)rn            else:rn                logging.info("Download URL not available.")rn                return Nonernrn        else:rn            logging.error(rn                f"Error fetching job status: {response.status_code} {response.text}"rn            )rn            return Nonernrn    except Exception as e:rn        logging.error(rn            f"An error occurred while fetching bulk validation status: {str(e)}"rn        )rn        return Nonernrndef download_validation_results(download_url):rn    """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    """rn    try:rn        response = requests.get(download_url)rnrn        # Check if the request was successfulrn        if response.status_code == 200:rn            logging.info("Successfully downloaded validation results.")rnrn            with zipfile.ZipFile(io.BytesIO(response.content)) as zip_ref:rn                validation_results_path = os.path.join(rn                    os.getcwd(), "validation_results"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(".json"):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"Error downloading results: {response.status_code} {response.text}"rn            )rn            return Nonernrn    except Exception as e:rn        logging.error(rn            f"An error occurred while downloading validation results: {str(e)}"rn        )rn        return Nonern
                                
                            

Validierungsergebnisse parsen und verarbeiten

Sobald Sie die Validierungsergebnisse heruntergeladen und darauf zugegriffen haben, müssen Sie diese parsen und verarbeiten. Dieser Schritt ist entscheidend für die Identifizierung zustellbarer und unzustellbarer E-Mails.

Fügen Sie den folgenden Code ein, um die Funktion in bulk_email_validation.py zu definieren, die diese beschriebene Aufgabe übernimmt:

                                

                                    def process_validation_results(results):rn    """rn    This function processes the validation results and handles invalid and risky emails.rnrn    :param results: The JSON object containing the validation results.rn    """rn    try:rn        count_of_deliverable_addresses: int = 0rn        emails_tobe_verified = set()rnrn        # Extract the results summaryrn        logging.info(f"Total email addresses validated: {len(results)}")rnrn        for result in results:rn            # Access data within each dictionaryrn            deliverable = (rn                result["result"] == "deliverable"rn            )  # Check if result is deliverablern            undeliverable = result["result"] != "deliverable"rn            risk = result["risk"]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["address"])rnrn            # Count the number of risky addresses and add them to the list for verificationrn            if risk != "low":rn                emails_tobe_verified.add(result["address"])rnrn        # Log the results summaryrn        logging.info(f"Found {count_of_deliverable_addresses} deliverable emails")rnrn        if len(emails_tobe_verified) > 0:rn            logging.warning(rn                "Found some emails that need to be verified because of its risky or undeliverable state."rn            )rn            logging.warning(rn                "Total emails to be verified: {}".format(len(emails_tobe_verified))rn            )rn            logging.warning(f"Emails to be verified: {', '.join(emails_tobe_verified)}")rnrn    except Exception as e:rn        logging.error(rn            f"An error occurred while processing validation results: {str(e)}"rn        )rn
                                
                            

Definieren Sie nun die Anweisungen zum Aufrufen dieser Funktionen mit dem folgenden Code:

                                

                                    if __name__ == "__main__":rnrn    if COMMAND == "submit_job":rn        create_bulk_validation_job(LIST_NAME, FILE_PATH)rn    elif COMMAND == "get_job_status":rn        get_bulk_validation_status(LIST_NAME)rn    else:rn        logging.error("Invalid command. Please use 'submit_job' or 'get_job_status'.")rn
                                
                            

Das finale Skript

Insgesamt übernimmt das gesamte Skript bulk_email_validation.py die Hauptarbeit, indem es eine Massen-E-Mail-Validierungsanfrage postet, den Status der übermittelten Validierungsauftragsanfrage abfragt und die Ergebnisse verarbeitet. Sobald Sie alle Änderungen vorgenommen haben, sollte Ihr Skript bulk_email_validation.py folgendermaßen aussehen: dieser.

Während des gesamten Skripts stellt die Verwendung von try…except-Blöcken sicher, dass etwaige Fehler während der API-Aufrufe verarbeitet werden. Dies ist besonders wichtig für Produktionsumgebungen, in denen unerwartete Probleme auftreten können, beispielsweise wenn Ihre Anwendung die Endpunkte des Mailgun-Service nicht erreichen kann oder wenn Sie versuchen, eine Validierungsauftragsanfrage mit demselben Listennamen zu übermitteln. Die Fehlermeldungen und die Kommentare im Quellcode helfen dabei, die verschiedenen anderen verarbeiteten Szenarien zu erklären.

Wenn Sie die Validierungsauftragsanfrage mit demselben Listennamen erneut übermitteln (im folgenden Abschnitt erfahren Sie, wie Sie das Skript ausführen), ist das Skript auch für solche Szenarien gerüstet, indem es die entsprechende Fehlermeldung mit einer Beschreibung ausgibt:

2024-09-28 07:34:39,081 - ERROR - create_bulk_validation_job - Error creating validation job: 409 {"message":"List already exists."}

Wenn ein Netzwerkfehler zwischen Ihrer Anwendung und dem Mailgun-Service auftritt, können Sie einen Wiederholungsmechanismus implementieren. Sie können entweder einen eigenen erstellen oder eine Bibliothek verwenden wie tenacity , um festzulegen, wie oft die Anfrage wiederholt werden soll, falls sie aufgrund vorübergehender Verbindungsprobleme fehlschlägt. Sie können auch weitere Fehlerbehandlungsszenarien implementieren, je nach den Anforderungen Ihres Projekts oder Unternehmens.

An diesem Punkt haben Sie die Einrichtung des Projekts abgeschlossen und es ist an der Zeit, es auszuführen.

Testen durch Übermitteln einer Massen-E-Mail-Validierungsauftragsanfrage

Um das Skript zur Übermittlung der Massenvalidierungsauftragsanfrage auszuführen, öffnen Sie ein Terminal und wechseln Sie in das Verzeichnis standalone_python_scripts. Führen Sie den folgenden Befehl aus:

python bulk_email_validation.py

Sie sollten eine Ausgabe sehen, die angibt, dass die Auftragsanfrage erfolgreich an den Mailgun-Service übermittelt wurde:

2024-09-28 19:47:34,012 - INFO - create_bulk_validation_job - Bulk validation job created successfully for bulk_mailing_list_validation_1

Testen durch Abrufen des Status des Massen-E-Mail-Validierungsauftrags

Manchmal nimmt der übermittelte 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 get_job_status zu aktualisieren. Führen Sie anschließend den folgenden Befehl aus, um diese Aufgabe auszuführen:

python bulk_email_validation.py

Sie sollten eine Ausgabe sehen, die angibt, dass der Validierungsauftrag abgeschlossen ist, die Ergebnisse heruntergeladen und anschließend verarbeitet werden:

2024-09-28 19:48:07,723 - INFO - get_bulk_validation_status - Successfully retrieved validation status for bulk_mailing_list_validation_1

2024-09-28 19:48:08,375 - INFO - download_validation_results - Successfully downloaded validation results.

2024-09-28 19:48:08,378 - INFO - process_validation_results - Total email addresses validated: 191

2024-09-28 19:48:08,378 - INFO - process_validation_results - Found 178 deliverable emails

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.

2024-09-28 19:48:08,378 - WARNING - process_validation_results - Total emails to be verified: 13

2024-09-28 19:48:08,378 - WARNING - process_validation_results - Emails to be verified:

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

Diese Ausgabe zeigt an, dass von 191 zur Validierung übermittelten E-Mail-Adressen 178 als zustellbar eingestuft werden und die restlichen 13 nicht.

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ßnahmen Sie basierend auf Ihren Projekt- oder Geschäftsanforderungen ergreifen möchten.

Massen-E-Mail-Validierung in eine Django-Anwendung integrieren

Da Sie nun diese Techniken erlernt haben, können 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.

Sie können darauf zurückgreifen oder klonen diesem GitHub-Repository , wenn Sie experimentieren und dem Ablauf folgen möchten. Das Verzeichnis bulk_email_validation enthält den Quellcode des Django-Projekts. Die folgenden Dateien sind die wichtigsten in diesem Projekt:

  • In der Datei requirements.txt enthält die für dieses Django-Projekt erforderlichen Abhängigkeiten.
  • In der Datei config.py enthält die Konfiguration für den Mailgun-Service.
  • In der Datei views.py enthält die Logik zur Verarbeitung der Anfrage und der Antworten in Bezug auf Endpunkte zur Massen-E-Mail-Validierung.
  • In der Datei serializers.py enthält Klassen, die dabei helfen, Daten zwischen Python-Objekten und Formaten wie JSON zu übersetzen, sodass das Senden oder Empfangen von Daten für Massen-E-Mail-Validierungs-APIs mit nur wenigen Codezeilen vereinfacht wird.
  • In der Datei urls.py enthält die beiden Endpunkte für die Massen-E-Mail-Validierung. Ein Endpunkt dient der Übermittlung der Massen-E-Mail-Validierungsauftragsanfrage; der andere dient dem Abrufen des Status und der Verarbeitung der Ergebnisse.

Die nachfolgenden Screenshots sollen Ihnen helfen, die Endpunkte zu verstehen, die diese Django-Anwendung behandelt, und die Ausgabe, die sie generieren kann.

Der erste Screenshot zeigt die POST-Anfrage mit Optionen zum Hochladen der E-Mail-Listendatei und Festlegen eines Namens für die E-Mail-Liste, zusammen mit der Antwort, die nach erfolgreicher Übermittlung der Massen-E-Mail-Validierungsauftragsanfrage empfangen wurde:

validation job response after its completion:

Der zweite Screenshot zeigt den erfolgreichen Abruf der Antwort des Validierungsauftrags nach dessen Abschluss:

POST request  Screen

Sie können 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.

Zusammenfassung

In diesem Tutorial haben Sie gelernt, wie Sie die E-Mail-Validierungs-API für 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üssels 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ßerdem haben Sie untersucht, wie Sie ungültige E-Mails verwalten, mit häufigen Fehlern umgehen und die E-Mail-Validierung in größere Webanwendungen wie Django integrieren. Der gesamte für dieses Tutorial vorgestellte Quellcode ist verfügbar in diesem GitHub-Repo.

Wenn Sie diese Schritte befolgen, identifizieren Sie zustellbare E-Mails aus Ihrer großen E-Mail-Liste effektiv und verbessern so die Qualität Ihrer E-Mail-Kampagnen, reduzieren Bounce-Raten und schützen Ihre Absenderreputation. Die Nutzung der leistungsstarken E-Mail-Validierungs-API für Massen-E-Mails von Mailgun rationalisiert nicht nur diesen Prozess, sondern stellt auch sicher, dass Ihre E-Mail-Zustellung zuverlässiger und effizienter wird. Während Sie Ihre E-Mail-Strategie weiter optimieren, werfen Sie einen Blick auf Mailgun, erkunden Sie die verschiedenen Produktangebote und nutzen Sie sie, um Ihre E-Mail-Kampagnen weiter zu optimieren und deren Wirkung zu maximieren.