Nodemailer mit Gmail verwenden - Teil 01
Die Bibliothek nodemailer bietet eine sehr komfortable Möglichkeit, eMails direkt aus einer NodeJS Anwendung heraus zu verwenden. Diese Bibliothek unterstützt verschiedene Standarts, wie zum Beispiel SMTP, XOAuth2, XOAuth, SES, und DKIM. In diesem Artikel soll das Zusammenspiel mit dem eMail-Dienst von Google (Gmail) unter Verwendung von XOAuth2 genauer betrachtet werden.
ClientID erstellen
Google verwendet für die Authentification von 3rd-Party-Anwendungen XOAuth / XOAuth2, um den Benutzer zu authentifizieren und zu autorisieren. Hierfür ist es zunächst erforderlich ein “Projekt”, mit Hilfe der Entwickler-Konsole von Google unter https://console.developers.google.com/project zu registrieren.
Der Projektname wird automatisch um einen zufälligen Zusatz erweitert, so dass dieser für alle Benutzer eindeutig ist. Optional empfiehlt es sich, die Region unter den erweiterten Einstellungen auf europe-west zu setzen.
Nachdem das Projekt erstellt wurde, können neue Anmeldedaten für eine konkrete Anwendung hinzugefügt werden. Navigieren Sie hierzu auf den Menüpunkt API’s und Authentification / Zugangsdaten. Öffnen Sie die Auswahl Anmeldedaten hinzufügen und wählen Sie OAuth 2.0-Client-ID.
Konfigurieren Sie im nächsten Schritt den Zustimmungsschirm. Geben Sie mindestens einen Produktnamen an. Wählen Sie für den Anwendungstype Webanwendung aus. Geben Sie Ihrem Client für Ihre Anwendung einen Namen z.B. “WebClient 1”. Für den nächsten Schritt ist es wichtig, dass Sie folgende URL zu der Liste der autorisierten Weiterleitungs-URIs hinzufügen:
https://developers.google.com/oauthplayground
Google stellt jetzt eine ClientID und einen Clientschlüssel bereit. Speichern Sie diese zwei Werte.
RefreshToken abrufen
Um eine Anwendung dauerhaft mittels OAuth autorisieren zu können, bietet das OAuth2 Verfahren die Möglichkeit neben dem Autorisation-Token, das nur für eine begrenzte Zeit gültig ist (oft eine Stunde), einen sog. Refresh-Token auszustellen. Dieses Token kann dazu verwendet werden, ein neues Autorisation-Token bei dem Server anzufordern, wenn das aktuelle Autorisation-Token abgelaufen ist.
Melden Sie Sich bei Google mit dem Benutzer an, für den Sie die Anwendung https://mail.coogle.com autorisieren möchten. Navigieren Sie zu der OAuth-Test-Konsole unter https://developers.google.com/oauthplayground. Konfigurieren Sie anschließend die OAuth-Konsole für die Verwendung mit der zuvor im ersten Teil erstellten ClientID und dem Clientschlüssel.
Wählen Sie nun die API, für die Sie einen Zugangstoken (engl: access token) erhalten möchten.
Hinweis: Die Bibliothek nodemailer erfordert die Eingabe der URL https://mail.coogle.com. Eine Auswahl von Gmail aus der Liste der verfügbaren APIs ist mit dieser Bibliothek nicht kompatibel.
Lassen Sie den Zugriff für die Client App, die Sie zuvor registriert haben, zu.
Verwenden Sie den Button Excange Autorisation code tokens, um einen gültigen Access- und einen Refresh-Token zu erhalten.