Navigation
 Startseite
 Fachbücher
 Forum
 Webmaster News
 Script Newsletter
 Kontakt
 Script Installation
 Php
 Php Tutorials
 Impressum

Community-Bereich
 kostenlos Registrieren
 Anmelden
 Benutzerliste

Script Datenbank
 Script Archiv
 Script Top 20
 Screenshots
 Testberichte

Suche
 

Unsere Php Scripts
 Counter Script
 Umfrage Script
 Bilder Upload Script
 Terminverwaltung
 Simple PHP Forum
 RSS Grabber

Script Mods
 phpBB Adsense Mode

Tools und Generatoren
 .htpasswd Generator
 md5 Generator
 base64 Generator
 ICQ Generator
 Colorpicker
 Unix timestamp Tool
 TLD Liste
 Webkatalog‑Verzeichnis

Partner
 Sprüche Treff

Hosterplus.de
Bekommen Sie Speicherplatz (Webspace), Domains und...
https://www.Hosterplus.de
Artfiles.de
Bietet Serviceorientierte Internetdienstleistungen...
https://www.Artfiles.de
 
 

E-Mail versenden mit PHP

Sie befinden sich: Home > Php > E-Mail versenden mit PHP

Mit mail(); stellt PHP eine einfach zu verwendende, und dennoch sehr hoch konfigurierbare Funktion zum versenden von E-Mails zur Verfügung. Der Syntax der mail(); Funktion ist fast selbsterklärend.

Der Syntax ist:

mail ( string $empfänger, string $betreff, string $nachricht [, string $zusatz_header [, string $zusatz_parameters]] )

Es wird von der Funktion direkt zurückgegeben true oder false, nach der Ausführung. Dadurch haben sie die Möglichkeit über eine If- Anweisung die Erfolgsmeldung gegebenenfalls Fehlermeldung nachträglich anzupassen. Ein Beispiel wie man dies einsetzt, wird im unteren Teil dieser Seite erklärt.

Als erstes wollen wir auf die einzelnen Variablen eingehen, womit man die Funktion ansteuern kann.


$empfänger - mail() erlaubt es auch mehr als einen Empfänger direkt anzugeben.

Dieser String für den Empf änger muss RFC2822 konform sein, um dies zu verdeutlichen ein paar Beispiele:

  1. benutzer@example.com
  2. benutzer@example.com, benutzer2@example.com
  3. Name <benutzer@example.com>
  4. Name <benutzer@example.com>, Name2 <benutzer2@example.com>

$betreff - Stellt den eigentlichen Betreff der E-Mail dar. Wichtig ist, das $betreff keine Zeilenumbrüche enthalten darf, da ansonsten die E-Mail nicht richtig versendet werden kann.

$nachricht - ist der eigentlichen Inhalt der Mail.

Zu beachten ist das jede Zeile durch ein LF - Zeichen \n ( LF steht für Line Feed ) getrennt werden muss, und das eine Zeile nicht mehr als 70 Zeichen enthalten sollte. Sofern PHP direkt mit einem SMTP Server kommuniziert und unter Windows verwendet wird, ist zu beachten das ein Punkt (.) am Anfang einer Zeile entfernt wird. Soll dies verhindert werden kann der Punkt durch zwei Punkte ersetzt werden.

Hier ein kleines Beispiel wie einfach man dies mit str_replace() machen kann.

<?php
$nachricht
= str_replace("\n.", "\n..", $nachricht);
?>

$zusatz_headers - Ist optional und muss nicht angegeben werden. Dieser String stellt eine Zeichenkette dar, die am Ende des E-Mail-Headers eingefügt werden soll. Dieses optionale Parameter wird hauptsächlich für Angaben wie From, CC oder BCC verwendet. Wenn mehrere dieser Parameter verwendet werden sollen müssen diese durch ein CRLF - Zeichen ( \r\n ) getrennt werden. Um überhaupt eine Mail versenden zu können MUSS ein From-header vorhanden sein.

Wichtig ist in diesem Zusammenhang der Umstand das die php.ini Datei dahin gehend angepasst werden kann, das nicht zwangläufig bei jedem Aufruf der mail(); Funktion explizit dieser String als additionales Parameter übergeben werden muss. Zu beachten ist, das einige UNIX Mail Transfer Agents das LF - Zeichen durch ein CRLF – Zeichen ersetzen, wodurch dann das CR – Zeichen doppelt vorhanden ist. In Ausnahmefällen reicht es dann, nur ein LF zu verwenden. ( Dies verstößt explizit gegen die RFC 2822 Norm )

$zusatz_parameters - Dieser Parameter ist optional und muss nicht zwingend angegeben werden. Der Parameter wird dazu verwendet zusätzliche Parameter an das entsprechende Mail- Programm zu übergeben. Hierbei ist es wichtig das der Sendmail Pfad in der php.ini Datei entsprechend gesetzt ist, um das Ziel der Parameterübergabe zu haben. Benutzt wird diese Funktion häufig, um eine nicht zustellbar E-Mail an eine bestimmte E-Mail-Adresse weiterzuleiten, dazu sollte Sendmail mit der -f Option benutzt werden. Um Fehler zu vermeiden sollte der Benutzer unter dem der Webserver läuft ebenfalls als bekannter Benutzer in der Sendmail - Konfiguration ( Diese Datei befindet sich meistens unter /etc/mail/trusted-users ) eingetragen sein.

Hinweis: Um diesen Parameter zu verwenden, ist es vonnöten, dass der SAFE_MOD in der PHP Konfiguration auf OFF gestellt ist.

Ein kurzes Beispiel zeigt den Gebrauch der mail() Funktion

<?php
/*
* In der Variabel $empfaenger wird
* die Empfänger E-Mail-Adresse gespeichert.
*/
$empfaenger = 'niemand@example.com';

/*
* In der Variabel $betreff wird
* der Betreff gespeichert. Es darf kein
* Zeilenumbruch enthalten sein.
*/
$betreff = 'Betreff der E-Mail';

/*
* In der Variabel $nachricht_text wird
* der Text der Nachricht gespeichert.
*/
$nachricht_text = 'Das ist der Nachrichtentext';

/*
* In der Variabel $header wird
* der Absender, Antwortet E-mail-Adresse sowie
* welche PHP-Version für den Versand zuständig
* ist gespeichert. Es muss explizit für die Angaben
* ein direkter Zeilenumbruch generiert werden.
*
* Den Zeilenumbruch machen wir mit "\r\n"
*/
$header = 'MIME-Version: 1.0'. "\r\n";
$header .= 'From: webmaster@example.com' . "\r\n";
$header .= 'Reply-To: webmaster@example.com' . "\r\n";
$header .= 'X-Mailer: PHP/' . phpversion(). "\r\n";
$header .= 'Content-Type:text/plain; charset=UTF-8';

/*
* Nach dem wir alle Parameter definiert haben
* können wir sie E-Mail direkt an unser Mailprogramm
* übergeben.
*
* Mit der If-Anweisung prüfen wir den zurückgegebenen
* Wert der Mailfunktion. Wir setzten direkt vor dem
* Mailfunktion ein @ Zeichen damit keine PHP
* Fehlermeldung ausgegeben werden.
*/
if (@mail($empfaenger, $betreff, $nachricht_text,
$header) === true) {
/*
* Wenn die Mailfunktion keinen Fehler
* zurückgeliefert geben wir den Text
* dafür aus, dass die E-Mail erfolgreich
* versendet wurde.
*/
echo 'Die erste E-Mail wurde erfolgreich versendet';
} else {
/*
* Sollte Mailfunktion einen Fehler
* zurückgeben, geben wir den Betrachter
* dieser Seite eine Fehlermeldung aus.
*/
echo 'Die erste E-Mail konnten nicht versendet werden';
}

/*
* Nachfolgend versenden wir eine E-Mail mit dem 5. Parameter.
* Diese E-Mail wird nur versendet, wenn der Safe_Mode=OFF ist.
*/

/*
* Prüfen ob Safe_Mode gesetzt ist, dies kann man mit der
* Funktion ini_get('safe_mode') machen. Es wird direkt ein
* String zurückgeliefert.
*/
if (ini_get('safe_mode') == '0' ) {
/*
* Wenn der Safe_Mode gesetzt ist auf OFF,
* versenden jetzt nun die E-Mail.
*/
if (@mail($empfaenger, $betreff, $nachricht_text,
$header, '-fwebmaster@example.com') === true) {
/*
* Wenn die Mailfunktion keinen Fehler
* zurückgeliefert geben wir den Text
* dafür aus, dass die E-Mail erfolgreich
* versendet wurde.
*/
echo 'Die zweite E-Mail wurde erfolgreich versendet';
} else {
/*
* Sollte Mailfunktion einen Fehler
* zurückgeben, geben wir den Betrachter
* dieser Seite eine Fehlermeldung aus.
*/
echo 'Die zweite E-Mail konnten nicht versendet werden';
}
}
?>

Wenn sie diesen Code in eine email_senden.php Datei speichern und diese direkt in den Browser aufrufen, versendet automatisch der Mailserver zwei E-Mails. Man hat nun die Möglichkeit zum Beispiel, mit der Übergabe von Variablen an die email_senden.php Datei ein einfaches Kontaktformular zu erstellen.

Häufig bekommen wir die Frage, wie so werden Umlaute in der E-Mail falsch dargestellt?

Dies kann verschiedene Ursachen haben.

Prüfen Sie den Charset ihrer Webseite. Der Browser sollte das Formular als UTF-8 interpretieren. Des Weiteren sollten Sie in ihren Editor überprüfen, ob die Kodierung der Datei auf UTF-8 gestellt ist. In PHPStorm ist das unten rechts. Über das Projektverzeichnis – File Encoding können Sie die Datei von zum Beispiel ISO-8859-1 auf UTF-8 stellen.

Zusätzlich muss der Charset im Mail Header angegeben werden. Diese wird in der Variable $header hinterlegt. Wenn die Umlaute immer noch falsch dargestellt werden in der E-Mail, müssen die PHP Einstellungen sowie die Apache Einstellungen überprüft werden. Dazu sollten Sie sich an ihren Webhoster wenden.

Eine Erklärung, wie Sie eine "E-Mail mit einen Dateianhang versenden" finden Sie in unsern Php Tutorial Bereich.

Hier geht es weiter zu der nächsten Erklärung, es wird hierbei direkt auf die Php Function eingegangen.