Eine der häufigsten Tätigkeiten, die man im Internet macht ist mit Sicherheit das Versenden und Empfangen von Emails. Es ist nun mal die einfachste und häufig auch die schnellste Möglichkeit, mit anderen Personen über das Netz Kontakt aufzunehmen. Doch Email lässt sich nicht nur zum Plaudern mit Freunden nutzen, sondern bietet auch andere Vorteile. So lassen sich damit Newsletter an viele Mitglieder einer Site senden. Möglicherweise unter Verwendung von Emailadressen, die in einer Datenbank gespeichert sind.
Doch wie lassen sich Emails versenden, ohne ein Emailclient nutzen zu müssen? Schöner wäre es, wenn man dies einfach über ein Webinterface machen könnte. Und hier kommt nun PHP ins Spiel, denn PHP bietet von Haus aus eine einfache Funktion zum Versenden von Emails. Was alles notwendig ist, um diese Funktion nutzen zu können, werde ich in diesem Artikel näher vorstellen.
Email Setup in PHP
Damit sich Email in PHP nutzen lässt, müssen einige Einstellungen in PHP vorgenommen werden, sofern dies nicht schon standardmäßig vom Provider voreingestellt ist. Wer einen eigenen Server verwendet, sollte folgende Einstellungen in der php.ini überprüfen, bzw. richtig einstellen. Also einfach die Datei in einem normalen Texteditor öffnen und nach der Sektion [mail function] suchen. Dort befinden sich normalerweise drei Einstellungen. SMTP, sendmail_from und sendmail_path. Je nachdem ob ein Windows oder ein Linux Server verwendet wird, müssen hier andere Einstellungen vorgenommen werden. In Linux wird unter sendmail_path der Pfad zum Sendmail Programm eingetragen und unter Windows in SMTP der SMTP Server. Das ganze würde dann jeweils wie folgt aussehen:
[mail function]
; Setup für Linux Systeme
sendmail_path = /usr/sbin/sendmail -t
sendmail_from = mein@server.de
[mail function]
; Setup für Windows Systeme
SMTP = smtp.server.de
sendmail_from =mein@server.de
In beiden Fällen wir unter sendmail_from die Emailadresse eingetragen, die später im "From" Feld der Email erscheinen soll die von PHP versendet wurde. Wenn die Einstellungen geändert wurden, muss die Datei abgespeichert und der Server neu gestartet werden.
Eine Email mit PHP versenden
Doch kommen wir nun zum spannenderen Teil. Und wenn man es genau nimmt, ist es sogar der einfachere Teil. Alles was man dazu benötigt ist die PHP Funktion mail. Das ganze sieht dann so aus:
Die obere Anweisung würde also eine Email mit dem Betreff "Betreff" und dem Emailtext "Und hier steht die Nachricht!" an die Emailadresse "empfaenger@name.de" senden. Zugegebenermaßen keine wirklich nützliche Mail, aber sie soll ja auch nur die Funktion erläutern.
Auf Fehler beim Senden prüfen
Natürlich kann es beim Senden von Emails auch zu Fehlern kommen die einen korrekten Versand der Email verhinden. So kann zum Beispiel die Empfänger Email falsch geschrieben sein. Um solche Fehler abzufangen, kann man folgende Konstruktion verwenden:
Wie die meisten anderen Funktionen in PHP liefert auch mail bei Mißerfolg Fehlermeldungen zurück. Um die Ausgabe der Fehlermeldung zu unterdrücken, stellt man der Funktion einfach ein @ vorran. Durch die if Funktion wird nun überprüft, ob die mail Funktion true oder false je nach erfolgreichen oder fehlerhaftem Ergebnis zurückliefert. Dementsprechend kann man nun eine eigene Fehlermeldung ausgeben.
Eine Email an mehrere Empfänger versenden
Um eine Email an mehrere Empfänger versenden zu können, muß einfach anstatt von nur einer Emailadresse eine Liste von Emails die durch Komma getrennt ist übergeben werden:
Diese Liste kann natürlich auch aus einer Datenbank geholt werden und der mail Funktion übergeben werden. So würde sich leicht eine Newsletter Anwendung entwickeln lassen, die automatisch den Newsletter an alle in der Datenbank gespeicherten Emails versendet.
Das ist eigentlich alles was man braucht, um eine einfache Email mit PHP versenden zu können. Natürlich bietet die mail Funktion noch ein paar weitere Möglichkeiten, um Emails zu versenden. Doch darauf werde ich in einem anderen Artikel näher eingehen.
Schön, und was wenn man keinen eigenen Server hat und nicht an die php.ini rankommt (funpic-server)
ich würde einen newsletter nicht mit so schicken, wie es oben steht, denn dann wird der Header sehr voll und alle Adressen sind sichtbar.
Hallöchen Webmatze-Team,
ich bastle gerade an einer Sende-PHP-Funktion herum und habe mich sehr gefreut, diese hier zu finden. Nun möchte ich gerne noch einige Variabelen mitsenden, wie mache ich das denn? Besten Dank!
Liebe Grüße
Antje Knop