Dev Life

E-Mails mit Node.js verifizieren

Schützen Sie Ihre Absenderreputation und optimieren Sie die E-Mail-Zustellbarkeit, indem Sie E-Mail-Adressen mit Node.js und der Massenvalidierungs-API von Mailgun validieren. Dieser Leitfaden zeigt Ihnen, wie Sie große Listen mit E-Mail-Adressen verifizieren, um Bounces zu reduzieren und sicherzustellen, dass Ihre Nachrichten in aktiven Postfächern ankommen.
Bild für E-Mails mit Node.js verifizieren

Von Zeit zu Zeit wechseln Personen auf Ihrer Mailingliste möglicherweise den Job oder den E-Mail-Service-Provider. Wenn dies geschieht, ändern sich auch ihre E-Mail-Adressen, wodurch ungültige Adressen auf Ihrer Liste zurückbleiben. Diese ungültigen E-Mails können zu hohen Bounce-Raten führen, was Ihrer Absenderreputation schadet und die Wahrscheinlichkeit erhöht, als Spam auf einer Blocklist zu landen.

Die E-Mail-Validierung hilft dabei, ungültige E-Mails zu vermeiden, indem sie sicherstellt, dass Ihre E-Mails echte, aktive Postfächer erreichen. Indem Sie E-Mail-Adressen regelmäßig verifizieren, reduzieren Sie die Wahrscheinlichkeit von Bounces, schützen Ihre Reputation bei Internet Service Providern (ISPs) und erhöhen die allgemeine Zustellbarkeit Ihrer Kampagnen.

Wenn Sie einen Batch von E-Mail-Adressen validieren möchten, Mailgun bietet eine API für die Massen-E-Mail-Validierung , die Sie genau dabei unterstützen kann. In diesem Tutorial erfahren Sie, wie Sie große Listen mit E-Mail-Adressen effizient in Node.js Anwendungen mit Mailgun verifizieren und den Prozess in Ihre Anwendung integrieren, um eine hohe Zustellbarkeit zu gewährleisten.

Voraussetzungen

Um diesem Tutorial zu folgen, benötigen Sie Folgendes:

  • Grundkenntnisse in Node.js
  • Ein Mailgun-Konto; um die Massen-E-Mail-Validierung zu nutzen, benötigen Sie ein kostenpflichtiges Konto

E-Mails mit Node.js und der Mailgun-API verifizieren

Um E-Mails mit Node.js über die Mailgun-API zu verifizieren, müssen Sie eine Mailingliste erstellen und die E-Mails hinzufügen, die Sie validieren möchten. Anschließend können Sie einen Validierungsjob für die Mailingliste starten und die Ergebnisse abrufen. Bevor Sie jedoch Anfragen an die Mailgun-API senden können, benötigen Sie Ihre Authentifizierungsdaten aus Ihrem Dashboard. Außerdem müssen Sie eine benutzerdefinierte Domain einrichten und verifizieren, um eine Mailingliste zu erstellen.

API-Schlüssel abrufen und eine benutzerdefinierte Domain einrichten

Die Mailgun-API autorisiert Anfragen mittels HTTP Basic Auth. Dafür müssen Sie einen Benutzernamen und ein Passwort in Ihre Authorization-Kopfzeile aufnehmen. Um die erforderlichen Daten abzurufen, loggen Sie sich in Ihr Mailgun-Konto ein, klicken Sie auf das Dropdown-Symbol oben rechts auf Ihrem Bildschirm und wählen Sie im Menü API Security:

API Security screen

Klicken Sie auf der Seite API Security auf den Button Add new key, um ein Modal mit einem Formular zu öffnen. Füllen Sie die Beschreibung im Formular aus, klicken Sie auf Create Key, kopieren Sie den API-Schlüssel und bewahren Sie ihn sicher auf. Dies ist Ihr Passwort, und es wird Ihnen nur einmal angezeigt:

Create Key screen

Als Nächstes können Sie Ihrem Mailgun-Konto eine benutzerdefinierte Domain hinzufügen und diese verifizieren. Dieser Schritt ist optional und nur in Produktionsumgebungen erforderlich. Für dieses Tutorial verwenden Sie die von Mailgun bereitgestellte Standard-Domain, die Sie unter Send > Sending > Domains finden:

Sending Domain screen

Notieren Sie sich den Namen der Standard-Domain. Sie benötigen ihn, um eine Mailingliste zu erstellen.
Nachdem Sie Ihre Authentifizierungsdaten abgerufen und eine benutzerdefinierte Domain hinzugefügt (oder die Standard-Domain notiert) haben, ist es an der Zeit, eine Node.js-Entwicklungsumgebung einzurichten, in der Sie Anfragen an die Mailgun-API stellen.

Entwicklungsumgebung einrichten

Um eine Node.js-Entwicklungsumgebung einzurichten, erstellen Sie zunächst ein neues Projektverzeichnis und wechseln mit dem folgenden Befehl in dieses Verzeichnis:

                                

                                    mkdir bulk-email-validation && cd bulk-email-validationrnThen, initialize npm in your project by running this command:rnnpm init -yrnRun the following command to install the required dependencies:rnnpm install axios dotenv form-datarn
                                
                            

Die installierten Abhängigkeiten umfassen Folgendes:

  • Axios: Dies ist eine Bibliothek, mit der Sie Anfragen an eine API senden und Antworten von ihr empfangen können. Sie verwenden Axios, um mit der Mailgun-API zu kommunizieren.
  • Dotenv: Dies ist eine Bibliothek, die Umgebungsvariablen in process.env lädt. Sie verwenden sie, um Ihre Authentifizierungsdaten sicher zu verwalten.
  • Form-Data: Dies ist eine Bibliothek, die lesbare multipart/form-data-Streams erstellt. Die Mailgun-API akzeptiert Daten nur als multipart/form-data. Daher benötigen Sie diese Bibliothek, um Formulare an die API zu übermitteln.

Erstellen Sie nach der Installation dieser Abhängigkeiten eine index.js-Datei und eine .env-Datei. Speichern Sie in Ihrer .env-Datei die folgenden Variablen und ersetzen Sie die Platzhalter durch die tatsächlichen Werte:

                                

                                    MAILGUN_USERNAME = apirnMAILGUN_PASSWORD = <API_KEY>rnThe value of your username must be api.rnIn your index.js file, add the following code block to import all the required dependencies and initialize dotenv:rnconst axios = require("axios");rnconst FormData = require("form-data");rnconst fs = require("node:fs");rnconst dotenv = require("dotenv");rndotenv.config();
                                
                            

Dieser Codeblock importiert die Abhängigkeiten, die für Anfragen an die Mailgun-API erforderlich sind. Zusätzlich zu den zuvor installierten Paketen umfassen die Importe das Node.js-Modul fs. Dieses benötigen Sie, um einen lesbaren Stream für die Datei mit Ihrer E-Mail-Liste zu erstellen.
Nachdem Ihre Entwicklungsumgebung nun bereit ist, validieren Sie E-Mail-Adressen in einer Mailingliste.

E-Mails in einer Mailingliste validieren

Wie bei den Voraussetzungen erwähnt, benötigen Sie ein kostenpflichtiges Konto, um den Dienst zur Massen-E-Mail-Validierung mit Mailgun zu nutzen.

Um einen Validierungsjob mit der Mailgun-API zu erstellen, müssen Sie eine POST-Anfrage an https://api.mailgun.net/v4/address/validate/bulk/${listId} stellen. Dabei ist listId ein beliebiger Wert, den Sie dem Validierungsjob zuweisen.

Dieser Endpunkt akzeptiert ein Formular mit einer CSV-Datei, die die E-Mail-Adressen enthält, die Sie validieren möchten. Die Spaltenüberschrift der CSV-Datei für E-Mails muss entweder email oder email_address lauten, und das Format muss entweder unformatiertes CSV oder gzip sein. Nehmen Sie eine unbegrenzte Anzahl von E-Mail-Adressen in die Datei auf. Die Dateigröße darf jedoch 25 MB nicht überschreiten.

Der Formularschlüssel für die CSV-Datei muss file lauten, und der Wert muss ein lesbarer Stream zum Dateipfad Ihrer CSV-Datei sein.

Fügen Sie den unten stehenden Codeblock zu Ihrer index.js-Datei hinzu, um eine Funktion zur Erstellung eines Massenvalidierungsjobs zu implementieren:

                                

                                    const createBulkValidationJob = async (listId) => {rn  try {rn    // Create a new form data objectrn    const form = new FormData();rnrn    // Add the file to the formrn    form.append("file", fs.createReadStream("PATH_TO_CSV_FILE"));rnrn    const response = await axios.post(rn      `https://api.mailgun.net/v4/address/validate/bulk/${listId}`,rn      form,rn      {rn        headers: {rn          ...file.getHeaders(),rn          Authorization:rn            "Basic " +rn            Buffer.from(rn              `${process.env.MAILGUN_USERNAME}:${process.env.MAILGUN_PASSWORD}`rn            ).toString("base64"),rn        },rn      }rn    );rnrn    console.log(response.data);rn  } catch (error) {rn    console.error(error);rn  }rn};rnCalling this function with a listId should return a response similar to this:rn{rn  id: 'validation', // Arbitrary value you assigned to the validation jobrn  message: 'The validation job was submitted.'rn}
                                
                            

Die Validierung einer Mailingliste nimmt Zeit in Anspruch. Um die Validierungsergebnisse zu erhalten, müssen Sie eine Anfrage mit der id Ihres Validierungsjobs an die API stellen.

Validierungsergebnisse abrufen

Um die Ergebnisse eines Validierungsjobs abzurufen, müssen Sie eine GET-Anfrage an https://api.mailgun.net/v4/address/validate/bulk/${listId} stellen, wobei die listId die id ist, die Sie Ihrem Validierungsjob zugewiesen haben.

Fügen Sie den folgenden Codeblock zu Ihrer index.js-Datei hinzu, um eine Funktion zum Abrufen Ihrer Validierungsergebnisse zu implementieren:

                                

                                    const getValidationResults = async (listId) => {rn  try {rn    const response = await axios.get(rn      `https://api.mailgun.net/v4/address/validate/bulk/${listId}`,rn      {rn        headers: {rn          Authorization:rn            "Basic " +rn            Buffer.from(rn              `${process.env.MAILGUN_USERNAME}:${process.env.MAILGUN_PASSWORD}`rn            ).toString("base64"),rn        },rn      }rn    );rnrn    console.log(response.data);rn  } catch (error) {rn    console.error(error);rn  }rn};rnCalling this function with a listId should return a response like this:rn{rn  created_at: 1728170695,rn  download_url: {rn    "csv": "https://s3.aws-example.com/downloads/bulk_validation_oct_2024.csv.zip",rn    "json": "https://s3.aws-example.com/downloads/bulk_validation_oct_2024.json.zip"rn  },rn  id: 'validation',rn  quantity: 10,rn  records_processed: 10,rn  status: 'uploaded',rn  summary: {rn    result: {rn      catch_all: 0,rn      deliverable: 3,rn      do_not_send: 0,rn      undeliverable: 1,rn      unknown: 6rn    },rn    risk: { high: 1, low: 3, medium: 0, unknown: 6 }rn  }rn}
                                
                            

Hier ist eine Aufschlüsselung der Ergebnisse:

  • created_at: Ein Zeitstempel, der angibt, wann der Job abgeschlossen wurde (1728170695).
  • download_url: Links, um die Ergebnisse im CSV- und JSON-Format herunterzuladen.
  • Quantity: Die Gesamtzahl der verarbeiteten E-Mails (10).
  • Status: Der Status des Validierungsjobs (uploaded).
  • Result: Das Ergebnis der E-Mail-Validierung:
  • catch_all: Keine Adressen stammen von Catch-all-Domains.
    • deliverable: Drei Adressen sind gültig und zustellbar.
    • do_not_send: Keine Adressen sind als „do not send“ markiert.
    • undeliverable: Eine Adresse ist ungültig oder unzustellbar.
    • unknown: Sechs Adressen konnten nicht verifiziert werden.
  • Risk: Eine Aufschlüsselung der E-Mail-Adressen nach Risiko:
    • high: Eine Adresse birgt ein hohes Risiko und ist wahrscheinlich unzustellbar oder problematisch.
    • low: Drei Adressen gelten als risikoarm und können sicher verwendet werden.
    • medium: Keine Adressen bergen ein mittleres Risiko, das Vorsicht erfordern könnte.
    • unknown: Sechs Adressen konnten nicht klassifiziert werden.
Eine umfassendere Antwort finden Sie in den JSON/CSV-Berichten, die Sie über die Links unter download_url herunterladen können. Bereinigen Sie mit diesen Informationen Ihre Liste und ergreifen Sie weitere gezielte Maßnahmen, um sicherzustellen, dass Ihre Mailingliste frei von ungültigen E-Mails ist. Dadurch erhöhen Sie Ihre Zustellbarkeitsraten, wenn Sie Transaktions-E-Mails oder E-Mail-Kampagnen versenden.

Fehlerbehandlung und Debugging

Bei der Nutzung der Mailgun-API für die Massen-E-Mail-Validierung können einige häufige Fehler auftreten. Hier ist eine Aufschlüsselung dieser Fehler und Tipps zur Behebung:

  • List already exists: Dieser Fehler mit dem Statuscode 409 weist darauf hin, dass bereits ein Validierungsjob mit derselben listId existiert, die Sie zu erstellen versuchen. Beheben Sie diesen Fehler, indem Sie die listId ändern und Ihre Anfrage erneut versuchen.
  • List CSV file missing: Dieser Fehler mit dem Statuscode 400 weist darauf hin, dass die API die CSV-Datei in Ihrer Anfrage nicht finden konnte, weil Sie den falschen Dateischlüssel verwenden. Stellen Sie sicher, dass Ihr Dateischlüssel auf file gesetzt ist, und versuchen Sie es dann erneut.
  • CSV File must contain the key email or email_address: Dieser Fehler mit dem Statuscode 400 weist darauf hin, dass in Ihrer CSV-Datei die Spaltenüberschrift email oder email_address fehlt. Beheben Sie diesen Fehler, indem Sie Ihre CSV-Datei so bearbeiten, dass sie eine dieser Überschriften enthält.
  • CSV file is malformed: Dieser Fehler mit dem Statuscode 400 weist darauf hin, dass Ihre Datei in einem nicht unterstützten Format vorliegt. Vergewissern Sie sich, dass die Datei mit Ihren E-Mails im CSV- oder gzip-Format vorliegt.
  • unauthorized: Dieser Fehler mit dem Statuscode 401 weist auf ein Problem mit Ihren Authentifizierungsdaten hin. Beheben Sie dies, indem Sie sicherstellen, dass Ihre API-Schlüssel gültig sind.
Das Beheben von Fehlern in der Mailgun-API bei der Massen-E-Mail-Validierung umfasst häufig die Überprüfung von Dateiformaten und Namenskollisionen, Kopfzeilen sowie Authentifizierungsdaten. Wenn Sie sicherstellen, dass Ihre CSV-Dateien korrekt strukturiert sind und Sie gültige API-Schlüssel verwenden, lassen sich diese häufigen Probleme vermeiden.

Best Practices für die Massen-E-Mail-Validierung

Um sicherzustellen, dass Ihre Massenvalidierungsjobs wie erwartet funktionieren, finden Sie hier einige Best Practices:

  • Respect API limits: Achten Sie darauf, die von der Mailgun-API vorgegebenen Limits einzuhalten, damit alle Ihre Anfragen verarbeitet werden. Beispielsweise dürfen CSV-Dateien nicht größer als 25 MB sein. Bei größeren Dateien wird die Antwort 400 zurückgegeben. Darüber hinaus können maximal fünf Validierungsjobs parallel ausgeführt werden. Wenn Sie dieses Limit überschreiten, wird eine 400-Antwort ausgegeben.
  • Use batching to avoid API limits: Wenn Sie einen großen Datensatz mit E-Mails validieren, fassen Sie diese in Gruppen zusammen, um die Dateigröße zu verwalten. Achten Sie dabei jedoch auf die Limits für die parallele Verarbeitung.
  • Check for specific status codes: Unterschiedliche Fehler erfordern verschiedene Behandlungsstrategien. Ein Fehler des Typs 400 Bad Request deutet wahrscheinlich auf ein Problem mit dem Anfrageformat hin. Versuchen Sie es nicht erneut. Protokollieren Sie stattdessen den Fehler und korrigieren Sie die Anfrage. Ein Fehler 500 Internal Server Error weist auf ein serverseitiges Problem hin. Versuchen Sie es nach einer Wartezeit erneut.

Zusammenfassung

In diesem Tutorial haben Sie erfahren, wie Sie E-Mails mit Node.js und der Mailgun-API verifizieren. Sie haben gelernt, wie Sie Mailinglisten erstellen, Mitglieder zu diesen Listen hinzufügen und die E-Mails in großen Mengen validieren.

Eine regelmäßige Massen-E-Mail-Validierung verbessert Ihre E-Mail-Zustellbarkeitsraten erheblich, hält eine bereinigte und effektive Mailingliste aufrecht, stellt sicher, dass Ihre Nachrichten die vorgesehenen Empfänger erreichen, und hilft Ihnen, eine gute Absenderreputation zu bewahren.

Um Ihre E-Mail-Prozesse noch weiter anzupassen, lesen Sie diesen Artikel. Dort erfahren Sie, wie Sie den Versand von E-Mails planen. Außerdem erfahren Sie in diesem Artikel, wie Sie Ihren E-Mail-Workflow im Cloud-Monitoring automatisieren.