Mail Funktion
Die E-Mail Funktion von PHP ist sehr praktisch, denn damit können wir Formulardaten versenden lassen oder ganze Newsletter-Scripts erstellen. Man kann dieses Verfahren auch für ein Gästebuch benutzen, z.B. das man eine Mail erhält, wenn sich jemand in das Gästebuch einträgt.
Wichtig
Wenn ihr diese Funktion auf eurem Computer ausführt, erhaltet ihr normalerweise eine Fehlermeldung:
Warning: mail():…
Dies kommt, weil euer virtueller Server keine E-Mails verschicken kann. Die Fehlermeldung könnt ihr ignorieren, denn auf dem echtem Server sollte sie eigentlich nicht mehr auftreten.
Mit der PHP-Funktion mail() könnt Ihr die Mails verschicken, der Befehl sieht so aus:
<?php mail([i]Empfängeremail,Betreff,Nachricht, "From: Absender <absenderemail>"[/i]);?>
Es ist sinnvoll die einzelnen Texte in Variablen zu speichern, damit man die übersicht behält.
So lassen sich aber nur Text E-Mails verschicken, HTML E-Mails sind etwas komplizierter (siehe unten).
Eine fertige PHP Mail Funktion würde so aussehen:
<?php $empfaenger ="[email protected]"; $betreff ="Die Mail-Funktion"; $from ="From: Nils Reimers <[email protected]>"; $text ="Hier lernt Ihr, wie man mit PHP Mails verschickt"; mail($empfaenger, $betreff, $text, $from);?>
So wird eine Mail von [email protected] an[email protected] verschickt.
Wenn euer Server richtig eingestellt ist, sollte die E-Mail sofort ankommen.
Natürlich könnt Ihr die Texte auch von einem Formular abfragen.
Die Mail wird so verschickt wie es im Quelltext des Scripts steht. Wenn Ihr z.B. ein ü durch ü (HTML Code für ein ü) ersetzen lasst, so steht es später in der Mail: ü. Denn dort werden dann nicht die Umlaute angezeigt, sondern der HTML-Code dafür (bei Text Emails).
Außerdem dürft Ihr keine HTML-Befehle benutzen, wenn z.B. in der E-Mail <br> steht, so wird das nicht in einen Zeilenumbruch verwandelt, sondern in der Mail steht dann <br>.
Für Zeilenumbrüche reicht ein einfaches Enter im Quelltext bzw. ein n. Um etwas Einzurücken, müsst ihr Tab bzw. Space benutzen.
HTML-Emails
Man kann mit PHP auch HTML-Emails verschicken
Aber Ihr solltet wissen, das nicht alle E-Mail Programme und E-Mail Anbieter diese HTML-Emails richtig anzeigen.
Man kann der E-Mail dann auch einen schwarzen Hintergrund geben mit weißer Schrift.
Aber Achtung, nicht alle E-Mail Programme/Anbieter zeigen die weiße Schrift an. Diese ersetzten sie dann manchmal durch schwarze Schrift, oder den schwarzen Hintergrund durch einen weißen. Somit kann der Empfänger die E-Mail nicht lesen, weil der Text und der Hintergrund identisch sind.
Damit PHP HTML-Emails verschicken kann, müsst Ihr die$from Variable etwas verändern.
<?php $empfaenger ="[email protected]"; $betreff ="Die Mail-Funktion"; $from ="From: Nils Reimers <[email protected]>n"; $from .="Reply-To: [email protected]"; $from .="Content-Type: text/htmln"; $text ="Hier lernt Ihr, wie man mit <b>PHP</b> Mails verschickt"; mail($empfaenger, $betreff, $text, $from);?>
Die Variable $from wird einfach ergänzt, aber achtet darauf, das nach dem Absender noch ein n stehen muss.
Außerdem haben wir noch eine Reply (Antwort) Adresse angegeben.
Bei dem Text müssen wir aufpassen, dass wir die Anführungszeichen “ durch ein Backslash () maskieren müssen.
Beispiel: Beispiel 2:
<?php $text ="Hier lernt Ihr, wie man mit <font color="red">PHP</font> Mails verschickt";?>
Der Text der Nachricht muss in dem Fall mittels HTML formatiert werden! Hier reicht für ein Zeilenumbruch kein Enter mehr, sondern man muss <br> benutzen.
Extra Funktionen
Wir können mir der mail-Funktion noch mehr machen, diese Angaben braucht man aber nicht unbedingt.
Alle Angaben stehen im From Abschnitt.
<?php $from="From:Nils Reimers<[email protected]>n"; $from .="Reply-To: [email protected]"; $from .="Cc: [email protected]"; $from .="Bcc: [email protected]"; $from .="X-Mailer: PHP/". phpversion()."n"; $from .="X-Sender-IP: $REMOTE_ADDRn"; $from .="Content-Type: text/html";?>
Mit Cc und Bcc wird die E-Mail an zwei weitere Adressen gesendet. Diese beiden Adresse sind der Cc und Bcc, diese Funktion kennt man auch von seinem Email-Anbieter.
Danach wird beim X-Mailer die PHP-Version des Servers angegeben. Mit X-Sender-IP erfahren wir die IP-Adresse des Versenders.
Die letzte Angabe bestimmt wieder, das es eine HTML Mail ist.
Bei Mailprogrammen wie z.B. Outlook oder Thunderbird kann man sich den Quelltext einer Email anzeigen lassen. Dort gibt es dann auch einen Head-Bereich, der bei uns der Variable $from entspricht.
Manche Werte werden von dem Mail-Server angehängt, andere können wir aber im PHP Script definieren.