ein kurzes Tut
eine Mail aus einem PHP-Skript zu versenden ist eine der leichtesten Aufgaben mit PHP.
Zunächst musst Du in deinem HTML-Formular jedem Eingabefeld einen Namen zuweisen. Im <FORM>-Tag gibst Du als Action Dein Skript an, und als Methode "Post"
Im Skript kannst Du dann auf die Inhalte der Variablen zugreifen, indem Du einfach den Feldnamen mit vorangestelltem $ verwendest.
Der Befehl zum versenden der Mail lautet so:
PHP:
mail($recipient,$subject,$message,"From: $sender <$frommail>";
Hier ein einfaches Beispiel:
Code:
HTML-Formular:
<FORM ACTION="email.php" METHOD="post">
Empfaenger:<INPUT TYPE="text" NAME="tomail">
Name des Absenders:<INPUT TYPE="text" NAME="sender">
Email des Absenders:<INPUT TYPE="text" NAME="frommail">
Betreff:<INPUT TYPE="text" NAME="subject">
Nachricht:<TEXTAREA COLS="30" ROWS="10" NAME="message"></TEXTAREA>
<INPUT TYPE="submit">
</FORM>
PHP:
// die Datei email.php:
$tomail = stripslashes($tomail);
$sender = stripslashes($sender);
$frommail = stripslashes($frommail);
$subject = stripslashes($subject);
$message = stripslashes($message);
// die Funktion stripslashes() entfernt den Backslash vor Sonderzeichen
mail($tomail,$subject,$message,"From: $sender <$frommail>";
Das war's schon. Einfach, nicht?
Im letzten Teil ("From: ...") kannst Du auch alle anderen Email-Header mit angeben, die Du brauchst. (z.B. CC:, BCC:, Content-Type:, etc.)
Etwas schwieriger wird es, wenn Du auch eine Funktion einbauen willst, um Dateien an die Email anzuhängen.
Im <FORM>-Tag muss zusätzlich ENCTYPE="multipart/form-data", und ein <INPUT TYPE="file" NAME="file"> stehen.
der Header in der Mail-Funktion wird um folgendes erweitert:
PHP:
$header = "From: $ sender <$frommail>\nMIME-Version: 1.0\n
Content-Type: multipart/mixed; boundary=\"========1234567\"";
// In EINE Zeile schreiben !!!!!
Die Nachricht wird so codiert:
PHP:
$fd = fopen($file, "r");
$anhang = chunk_split(base64_encode(fread( $fd, filesize($file))));
fclose($fd);
$message = "--========1234567\nContent-Type: text/plain; charset=\"us-ascii\"\n
Content-Transfer-Encoding: 7bit\n\n\n".$message."\n--========1234567\n
Content-Type: $file_type; name=$file_name\nContent-Transfer-Encoding:
base64\nContent-Disposition: attachment; filename=\"$file_name\"\n\n".$anhang;
// die letzten vier Zeilen in EINE Zeile schreiben !!!!!
ok, ok, war jetzt etwas unübersichtlich
aber mit ein bisschen Probieren sollte das klappen.
Ein Tip: einfach mal ein Mail mit Anhang "normal" an sich selbst verschicken, und sich den Quelltext der Mail anzeigen lassen.
Dann mit der vom Skript versandten Mail vergleichen. (so hab ich's auch gemacht ... bis es schließlich gefunzt hat
)
So. Viel Spaß, beim ausprobieren.
Wenn noch Fragen sind, könnt ihr diese ja hier posten.
Gruß
Dunsti