Gmail SMTP für eigene PHP-Scripte verwenden

Worum geht es

Hin und wieder macht man Dinge die man eigentlich gar nicht gerne tut. Bei mir ist das z.B. die Umsetzung kleiner Kundenanfragen mit PHP. Vor einigen Jahren war das für mich noch völlig in Ordnung, heute liegt mein Focus jedoch klar auf anderen Dingen als kleine Probleme im Quellcode selbst zu lösen. Dennoch hat mich eine der letzten Wünsche eines Bekannten dann doch ein wenig in den Wahnsinn getrieben. Es ging um die Anforderung dass ein bereits seit vielen Jahren existierendes Shopsystem angepasst werden soll so dass die Mails nicht mehr über den eigenen SMTP-Server sondern über den Gmail SMTP versendet werden sollte. Hierzu wurde GSuite-Konto erstellt über welches der Mailversand der eigenen Domain läuft. Nun muss “nur” der Mailversand des Shopsystems auf den Google SMTP umgestellt werden. Nur …

Fast Forward

In der aktuellen Implementierung des Shops war der Mailer bereits in einer eigenen Klasse separiert welche mittels SMTP über den lokalen Mailserver seine Mails versendete. Um den Aufwand möglichst gering zu halten wurde entschieden dass wir diesen Weg weiter verfolgen und eine Authentifizierung mittels Username + Passwort umsetzen. Ein klein wenig Internetrecherche brachte mich auf ein Github-Projekt bei welchem eine Musterlösung für dieses Problem zu finden war:

https://github.com/PHPMailer/PHPMailer/blob/master/examples/gmail.phps

Also wurde die Klasse fix eingebunden und los geht es. Testhalber habe ich dann erstmal die Zugangsdaten meines eigenen Kontos genutzt doch leider war der Mailversand nicht möglich. Ständig erhielt ich eine Fehlermeldung dass die Authentifizierung nicht möglich sei. Auch nach mehrmaligem Prüfen der Zugangsdaten konnte dies als Ursache ausgeschlossen werden.

Einstellungen im Google Account prüfen

Nach einigem hin und her wurde ich in irgend einem Forum auf relevante Einstellungen bei Google aufmerksam. Diese verhindern den “unberechtigten” Zugriff auf das Mailkonto. Hierbei sind 2 Einstellungen zu nennen:

Deaktivierung der 2-Faktor Authentifizierung

Damit eine externe Anmeldung zu Google mit Username und Passwort möglich ist muss die 2-Faktor Authentifizierung deaktiviert werden. Dies erfolgt über den Security-Bereich in der Accountverwaltung von Google (https://myaccount.google.com/security). Die Option “Bestätigung in 2 Schritten” muss deaktiviert werden:

Slider image
Slider image

Aktivierung des Zugriffes durch “weniger sichere Apps”

Zusätzlich muss das Gmail-Konto noch für den Zugriff durch “weniger sichere Apps” freigeschaltet werden. Diese Einstellung ist ein wenig verborgen und kann über die folgende URL gefunden werden: https://myaccount.google.com/lesssecureapps

Slider image
Slider image

Mailversand über den Gmail SMTP

Nachdem die obigen Einstellungen angepasst wurden steht auch dem Mailversand nichts mehr im Wege. In den ersten Tests hat sich gezeigt dass der Versand sehr sicher und stabil funktioniert. Gesendete Mails erscheinen im GMail Postfach als gesendete Objekte und kommen beim Empfänger sauber an.

Bessere Alternative: O-Auth Authentifizierung

Die hier beschriebene Variante hat diverse Nachteile. Das grösste Problem ist ohne Zweifel dass das persönliche Passwort im PHP-Script hinterlegt werden muss. Aus meiner Sicht ist die hier beschriebene Umsetzung so nicht zu empfehlen.

Auch Google hat hierzu eine klare Stellung und stellt das hier beschriebene Verfahren zum 15. Februar 2021 ab.

After February 15, 2021 – Access to LSAs will be turned off for all G Suite accounts. 

https://gsuiteupdates.googleblog.com/2019/12/less-secure-apps-oauth-google-username-password-incorrect.html

Leider kam diese Meldung erst am 16. Dezember 2019 raus. Zu diesem Zeitpunkt war bei meinem Kunden die obige Umsetzung schon aktiv …

Artikel teilen

This article was written by Thomas Schiffler

Alles was mit IT zu tun hat steht bei mir hoch im Kurs. Hierbei dreht sich vieles um Java, Python oder auch mal PHP. Unser Zuhause ist mit diversen Raspberry PIs ausgestattet mit welchen ich versuche unser Leben durch etwas Automatisierung ein wenig smarter zu gestalten. Hierbei möchte ich die Technik und die dahinter eingesetzten Tools / Frameworks verstehen und nicht einfach nur Anwenden. Ich selbst bezeichne mich als ITler aus Leidenschaft :) Seit 2020 ist das Thema Chatbot / Voicebot / Conversational.ai in meinen Focus gerückt. In diesem Bereich investiere ich gerade viel Zeit.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert