Problem mit FormMailer
Hallo,
ich möchte einen einfachen FormMailer einsetzen und habe das Problem dass scheinbar die Variablen aus der User-Abfrage nicht ins formmailer-Script übernommen werden.
Folgende Abfrage mach ich für für den User:
<form name="mail" method="post" action="mailer.php">
Name
<br />
<input type="text" name="Name" />
<input name="Submit" type="submit" value="Nachricht senden" />
und das formmailer-Script (mailer.php) schaut so aus:
sendEmail() ;
function sendEmail(){
Zu Testzwecken
1 => Der Inhalt der eMail wird in eine Textdatei geschrieben (wenn Sie offline testen möchten)
0 => Die eMail wird verschickt
$testOffline = 0 ;
Geben Sie hier ein gültige eMail-Adresse von sich an
Diese eMail-Adresse wird dann auch als Absender-eMail-Adresse angezeigt, wenn die nachfolgende
Option nicht aktiviert (also auf 1 gesetzt) wird.
(Dies ist bei manchen Providern Voraussetzung, um Spamming zu verhindern)
$emailFrom = "user@domain.at" ;
eMail-Adresse des Versenders als Absenderadresse nutzen (um beispielsweise direkt anworten zu können)
1 => Ja | 0 => Nein
$useSendersEmail = 0 ;
Geben Sie nachfolgend den Namen des Formularfeldes an, in das der Absender seine
Die Eingabe ist nur dann notwendig, wenn Sie die vorangehende Option ($useSendersEmail) auf "1" setzen!
$mailFromField = 'eMail' ;
SPAM-MISSBRAUCH-SCHUTZ
Aktivieren Sie den Schutz vor einem Missbrauch des Formmailers durch Spammer!
Genauere Informationen finden Sie in der README.txt
1 => aktiviert | 0 => NICHT aktiviert
$spamProtect = 0 ;
Empfänger eMail-Adressen, Subject, Zielseite nach dem Versenden der eMail
Soll KEINE Kopie der eMail an eine zweite Adresse geschickt werden, so löschen Sie die "Dummy"-eMail-Adresse
"kopie@ihre_domain.de", so daß nur noch die beiden Hochstriche stehen bleiben ("").
Ansonsten geben Sie dort bitte eine gültige eMail-Adresse ein.
Genauere Informationen finden Sie in der README.txt
$send_dat = array(
"dat1" => array("meine@mailadresse.at", "", "Kontakt über die Internetseite", "index.php"),
#"dat2" => array("", "", "", ""),
#"dat3" => array("", "", "", ""),
);
Felder aus dem Formular, die NICHT mit der eMail übertragen werden sollen.
TIPP: Verwenden Sie grafische Buttons als "Absendeknopf", so werden die Koordinaten
der Klickstelle mit der eMail verschickt. Um diesen (unschönen) Effekt zu umgehen,
geben sie für den grafischen Button name="senden" ein.
$ignoreFormFields = array('send_index', 'senden', 'submit', 'check_form','Submit','senden_y','senden_x');
Datum (+deutsche Tage)
$name_tag = array('Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag');
$day = $name_tag[date('w')];
$year = date('Y');
$n = date('d');
$month = date('m');
$time = (date('H:i'));
Prüfung, welches send_dat-Array zum senden verwendet werden soll
Default: dat1
!empty($_POST['send_index']) ? $st = $_POST['send_index'] : $st = 'dat1';
Versende Daten
$mailto = $send_dat[$st]; Ziel-eMail-Adresse
$mail_cc = $send_dat[$st][1]; 2. Ziel-eMail-Adresse (Kopie)
$subject = $send_dat[$st][2]; Subjekt
$redirect = $send_dat[$st][3]; Zielseite nach eMailversand
Formularfelder auslesen und in die eMail "einsetzen"
Zu ignorierende Felder werden NICHT eingesetzt
while (list($fieldName, $fieldValue) = each($_POST)) {
$message .= "== $fieldName =====\r\n$fieldValue\r\n\r\n\r\n";
}
Funktion zum prüfen des Inhaltes aufrufen
$message = cleanContent($message, $spamProtect);
Datum und Zeit voranstellen
$message = ":: Gesendet am $day, den $n.$month.$year - $time Uhr ::\r\n\r\n$message";
Weiterleitung auf eine andere Seite
Header("Location: $redirect");
Absender-eMail-Adresse
($useSendersEmail == 1) ? $emailFrom = $_POST[$mailFromField] : $emailFrom = $emailFrom;
$header = "From: $emailFrom";
Kopie schicken
if (!empty($mail_cc)) {
$header .= "\r\n";
$header .= "Cc: $mail_cc";
}
eMail verschicken
if ($testOffline == '0') {
}
eMail zum testen in ein Textfile schreiben
if ($testOffline == '1') {
$testmail = fopen('email.txt', 'w+');
fwrite($testmail, $message);
fclose($testmail);
}
}
function cleanContent($content, $spamProtect) {
$content = str_replace('<br>', "\r\n", $content);
$content = stripslashes(strip_tags($content));
Spam-Missbrauch-Schutz aufrufen
if($spamProtect == 1) { $content = checkContent($content); }
return $content;
}
function checkContent($tpcontent) {
kritische Zeichen entfernen
$checkit = array("/bcc\:/i","/cc\:/i","/to\:/i");
$tpcontent = preg_replace($checkit, "", $tpcontent);
Script-Abbruch bei eindeutigem Spamversuchen
if (preg_match("/(MIME\-Version\:|Content\-Type\
/i", $tpcontent)) {
die('Ihre Angaben enthalten kritische Zeichen! Aus Gründen des Spamschutzes wird Ihre Nachricht nicht versendet.');
}
if (empty($tpcontent)) {
die('Es wurden keine Angaben gemacht! Ein leeres Formular wird nicht versendet.');
}
return $tpcontent ;
}
?>
Beim Mail welches Versende wird steht nur das Datum/Uhrzeit drin, welche in mailer.php selbst eingetragen wird. Die Daten, welche von der Abfrage ins mailer.php übertrgen werden sollen stehen nicht drin
Kann es sein, dass Einstellungen in der PHP.ini nicht passen???
ich möchte einen einfachen FormMailer einsetzen und habe das Problem dass scheinbar die Variablen aus der User-Abfrage nicht ins formmailer-Script übernommen werden.
Folgende Abfrage mach ich für für den User:
<form name="mail" method="post" action="mailer.php">
Name
<br />
<input type="text" name="Name" />
<input name="Submit" type="submit" value="Nachricht senden" />
und das formmailer-Script (mailer.php) schaut so aus:
sendEmail() ;
- Konfiguration
function sendEmail(){
Zu Testzwecken
1 => Der Inhalt der eMail wird in eine Textdatei geschrieben (wenn Sie offline testen möchten)
0 => Die eMail wird verschickt
$testOffline = 0 ;
Geben Sie hier ein gültige eMail-Adresse von sich an
Diese eMail-Adresse wird dann auch als Absender-eMail-Adresse angezeigt, wenn die nachfolgende
Option nicht aktiviert (also auf 1 gesetzt) wird.
(Dies ist bei manchen Providern Voraussetzung, um Spamming zu verhindern)
$emailFrom = "user@domain.at" ;
eMail-Adresse des Versenders als Absenderadresse nutzen (um beispielsweise direkt anworten zu können)
1 => Ja | 0 => Nein
$useSendersEmail = 0 ;
Geben Sie nachfolgend den Namen des Formularfeldes an, in das der Absender seine
$mailFromField = 'eMail' ;
SPAM-MISSBRAUCH-SCHUTZ
Aktivieren Sie den Schutz vor einem Missbrauch des Formmailers durch Spammer!
Genauere Informationen finden Sie in der README.txt
1 => aktiviert | 0 => NICHT aktiviert
$spamProtect = 0 ;
Empfänger eMail-Adressen, Subject, Zielseite nach dem Versenden der eMail
Soll KEINE Kopie der eMail an eine zweite Adresse geschickt werden, so löschen Sie die "Dummy"-eMail-Adresse
"kopie@ihre_domain.de", so daß nur noch die beiden Hochstriche stehen bleiben ("").
Ansonsten geben Sie dort bitte eine gültige eMail-Adresse ein.
Genauere Informationen finden Sie in der README.txt
$send_dat = array(
"dat1" => array("meine@mailadresse.at", "", "Kontakt über die Internetseite", "index.php"),
#"dat2" => array("", "", "", ""),
#"dat3" => array("", "", "", ""),
);
Felder aus dem Formular, die NICHT mit der eMail übertragen werden sollen.
TIPP: Verwenden Sie grafische Buttons als "Absendeknopf", so werden die Koordinaten
der Klickstelle mit der eMail verschickt. Um diesen (unschönen) Effekt zu umgehen,
geben sie für den grafischen Button name="senden" ein.
$ignoreFormFields = array('send_index', 'senden', 'submit', 'check_form','Submit','senden_y','senden_x');
- Programmablauf (ab hier nichts mehr ändern)
Datum (+deutsche Tage)
$name_tag = array('Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag');
$day = $name_tag[date('w')];
$year = date('Y');
$n = date('d');
$month = date('m');
$time = (date('H:i'));
Prüfung, welches send_dat-Array zum senden verwendet werden soll
Default: dat1
!empty($_POST['send_index']) ? $st = $_POST['send_index'] : $st = 'dat1';
Versende Daten
$mailto = $send_dat[$st]; Ziel-eMail-Adresse
$mail_cc = $send_dat[$st][1]; 2. Ziel-eMail-Adresse (Kopie)
$subject = $send_dat[$st][2]; Subjekt
$redirect = $send_dat[$st][3]; Zielseite nach eMailversand
Formularfelder auslesen und in die eMail "einsetzen"
Zu ignorierende Felder werden NICHT eingesetzt
while (list($fieldName, $fieldValue) = each($_POST)) {
}
Funktion zum prüfen des Inhaltes aufrufen
$message = cleanContent($message, $spamProtect);
Datum und Zeit voranstellen
$message = ":: Gesendet am $day, den $n.$month.$year - $time Uhr ::\r\n\r\n$message";
Weiterleitung auf eine andere Seite
Header("Location: $redirect");
Absender-eMail-Adresse
($useSendersEmail == 1) ? $emailFrom = $_POST[$mailFromField] : $emailFrom = $emailFrom;
$header = "From: $emailFrom";
Kopie schicken
if (!empty($mail_cc)) {
$header .= "\r\n";
$header .= "Cc: $mail_cc";
}
eMail verschicken
if ($testOffline == '0') {
eMail zum testen in ein Textfile schreiben
if ($testOffline == '1') {
$testmail = fopen('email.txt', 'w+');
fwrite($testmail, $message);
fclose($testmail);
}
}
- Inhalte "bereinigen"
function cleanContent($content, $spamProtect) {
$content = str_replace('<br>', "\r\n", $content);
$content = stripslashes(strip_tags($content));
Spam-Missbrauch-Schutz aufrufen
if($spamProtect == 1) { $content = checkContent($content); }
return $content;
}
- Spam-Missbrauch-Schutz
function checkContent($tpcontent) {
kritische Zeichen entfernen
$checkit = array("/bcc\:/i","/cc\:/i","/to\:/i");
$tpcontent = preg_replace($checkit, "", $tpcontent);
Script-Abbruch bei eindeutigem Spamversuchen
if (preg_match("/(MIME\-Version\:|Content\-Type\
die('Ihre Angaben enthalten kritische Zeichen! Aus Gründen des Spamschutzes wird Ihre Nachricht nicht versendet.');
}
if (empty($tpcontent)) {
die('Es wurden keine Angaben gemacht! Ein leeres Formular wird nicht versendet.');
}
return $tpcontent ;
}
- ENDE
?>
Beim Mail welches Versende wird steht nur das Datum/Uhrzeit drin, welche in mailer.php selbst eingetragen wird. Die Daten, welche von der Abfrage ins mailer.php übertrgen werden sollen stehen nicht drin
Kann es sein, dass Einstellungen in der PHP.ini nicht passen???
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 94961
Url: https://administrator.de/forum/problem-mit-formmailer-94961.html
Ausgedruckt am: 03.04.2025 um 19:04 Uhr
1 Kommentar