Sie können sich
hier anmelden
Dieses Thema hat 3 Antworten und wurde 625 mal aufgerufen
kreftilein
(
gelöscht
)
10.01.2012 21:40
#1 RE: universeller Formmailer: alles funktioniert, aber keine Mail kommt
Antworten
Hallo allerseits, ich habe PHP das letzte Mal vor über fünf Jahren benutzt und auch da war es schon nicht gerade excellent. Jetzt wollte ich einen betagten Formmailer durch diesen austauschen und etwas modifizieren. Es funktioniert auch alles so, wie ich es mir gewünscht habe, bis auf eines: Es kommt nie eine Mail an. Wo ist der Fehler, ich finde leider nix. Die Formatierung der Felder ist im Kontext der restlichen Seite zwingend nötig! Vielen Dank im voraus. Hier ist der modifizierte Code: define ('MAILTO', "-f mail@example.org "); // Empfänger hier eintragen define ('MAILFROM', "Kontaktformular"); // ggfls. Absender hier eintragen define ('CHARSET', "ISO-8859-15"); // Zeichenkodierung ggfls. anpassen $Pflichtfelder = array('Name', 'Email', 'Nachricht'); // ggfls. weitere Pflichtfelder angeben $AddHeader = 'Content-Type: text/plain; charset='.CHARSET; if(MAILFROM) $AddHeader .= chr(13).chr(10).'From: '.MAILFROM; if($Formular_abgeschickt = !empty($_POST)) { $Formular_leer = true; set_magic_quotes_runtime(0); $_POST = array_map('Formular_Daten', $_POST); } function Formular_Daten($val) { global $Formular_leer; if(is_array($val)) return array_map('Formular_Daten', $val); if(get_magic_quotes_gpc()) $val = stripslashes($val); if($val = trim($val)) $Formular_leer = false; return $val; } function Formular_Pflichtfelder() { global $Pflichtfelder; $Fehler = ''; foreach ($Pflichtfelder as $Feld) { $key = str_replace(' ','_',$Feld); if(!(isset($_POST[$key]) && trim($_POST[$key])!=='')) { if($Fehler) $Fehler .= ' '; $Fehler .= 'Pflichtfeld "' . $Feld . '" nicht ausgefüllt.'; } } return $Fehler; } function Formular_neu($log='.htPOSTdata.txt') { if(file_exists($log) && is_readable($log) && file_get_contents($log) == print_r($_POST,true)) return false; if($handle=@fopen($log, 'w')) { fwrite($handle, print_r($_POST,true)); fclose($handle); } return true; } function Formular_Check() { global $Formular_leer; if($Formular_leer) $Fehler = 'Es sind nicht alle Felder ausgefüllt.'; elseif(!$Fehler = Formular_Pflichtfelder()) { if(!checkEmail($_POST['Email'])) $Fehler = 'E-Mail fehlerhaft.'; elseif(!Formular_neu()) $Fehler = 'Nachricht war bereits verschickt.'; } return $Fehler; } function Formular_Eingabe($Feldname, $def='') { if(isset($_POST[$Feldname]) && $_POST[$Feldname]!=='') echo htmlspecialchars($_POST[$Feldname]); else echo $def; } function checkEmail($adr) { $regEx = '^([^s@,:"<>]+)@([^s@,:"<>]+.[^s@,:"<>.d]{2,}|(d{1,3}.){3}d{1,3})$'; return (preg_match("/$regEx/",$adr,$part)) ? $part : false; } function Formular_Nachricht() { $msg=''; $vor='['; $nach='] => '; // oder z.B. $vor=''; $nach=": "; foreach ($_POST as $key => $val) { $msg .= $vor.$key.$nach.$val.chr(13).chr(10); } return $msg; } ?> "http://www.w3.org/TR/html4/loose.dtd">
enctype="multipart/form-data" accept-charset="">
$Formular_Anzeige = true;
if($Formular_abgeschickt) {
if($Formular_Fehler = Formular_Check())
echo '
',$Formular_Fehler,'
';
elseif(@mail(MAILTO, "Nachricht", Formular_Nachricht($_POST,true), $AddHeader))
{ $Formular_Anzeige = false;
echo '
Nachricht verschickt.
';
}
else echo '
Server-Fehler !
';
}
if($Formular_Anzeige): ?>
enctype="multipart/form-data" accept-charset="">