20 März 2013 15:52

E-Mail mit PHP verschicken

Die meisten Webhoster unterstützen in ihrer PHP-Installation die mail()-Funktion. Diese erlaubt das Versenden von E-Mails über einen lokalen Mailserver. Für das PHP-Script hat das den Vorteil, keine SMTP-Daten zu benötigen.

Der Nachteil ist hingegen, dass die Mails, welche über mail() verschickt werden, meistens im Spam-Verzeichnis des Empfängers landen. Warum? Weil die E-Mail als ein Spoofing-Versuch erkannt wird.

Spoofing

Das liegt daran, dass SMTP keine Überprüfung des Absenders vornimmt. Dieser steht – frei wählbar – im E-Mail-Header (From:). Theoretisch könnte sich also der Absender für jemand anderes ausgeben. Das wird auch oft gemacht, weswegen die meisten großen Mail-Server-Betreiber SPF und/oder DKIM verwenden um die Authentizität des Absenders zu überprüfen.

Bei PHP mail() muss ein Absender angegeben werden. Adressen wie admin@localhost werden von den meisten Servern abgelehnt, da sie einen fully qualified domain name erwarten. Nimmt man aber beispielsweise example@gmx.net, so wird die Mail im Spam landen, da sie vom lokalen Mail-Server verschickt wurde und nicht von gmx.net.

Lösung

Die beste Lösung ist, SMTP zu verwenden. Problematisch ist das, wenn man zum Beispiel E-Mails über ein Kontaktformular verschicken möchte und der Absender im From stehen soll. Wenn man Pech hat, verweigert der Mail-Server nämlich die Mail, weil der Absender nicht zum Account passt.

Alternativ muss man den lokalen Mail-Server so konfigurieren, dass er SPF und DKIM unterstützt. Das funktioniert natürlich auch nur, wenn die Absender-Adresse zum Server passt.

Eine einfache Lösung gibt es leider nicht. Wo möglich sollte man SMTP nutzen, aber auch dort gibt es Einschränkungen. Somit bleibt das Versenden von E-Mail über PHP keine leichte Angelegenheit. Hat jemand Tipps, wie man in der o.g. Kontaktformular-Situation am besten verfahren sollte?

Kommentare

Powered by BetaBlog
Login | RSS Beiträge RSS Kommentare Impressum