Problem mit Formmailer - Daten werden nicht übertragen...
lima-city → Forum → Die eigene Homepage → HTML, CSS & Javascript
absender
adresse
alt
betreff
date
datensatz
dienstag
email
erste
fehler
formular
hinweis
jahr
monat
montag
nummer
schlu
stehen
weiterleitung
zieladresse
-
Hallo,
die Daten von meinem Formmailer werden nicht an meine E-Mail adresse ?bertragen. Sendet jemand eine Mail ?ber den Mailer, so bekomme ich nur einen hinweis text, dass ein Formular bereit gestellt wurde, jedoch keinen weiteren Link oder sonst irgend einen Hinweis.
Der zeigt nur diesen hinweistext an oder mit dem Befehl Plain/Text
sowas:
Name=Papenburger17
Alter=18
Sowas soll der net anzeigen, wie kann ich das ?ndern, dass der nur Papenburger17, 18 und sowas anzeigt?
Hier der Quelltext:
<table border="0">
<tr><td><form action="mailto:mailaddy" method="post"></td></tr>
<tr><td>Name:</td><td><input type="text" name="name"></td></tr>
<tr><td>PLZ, Ort:</td><td><input type="text" name="plz"></td></tr>
<tr><td>Stra?e:</td><td><input type="text" name="stra?e"></td></tr>
<tr><td>Telefon:</td><td><input type="text" name="telefon"></td></tr>
<tr><td>Telefax:</td><td><input type="text" name="telefax"></td></tr>
<tr><td>E-Mail:</td><td><input type="text" name="E-Mail"></td></tr>
<tr><td>Ausgew?hlte Objekt-Nummer(n):</td><td><input type="text" name="nummern"></td></tr>
<tr><td>Bemerkungen, Fragen:</td><td><textarea cols=50" rows="20"></textarea></td></tr>
<tr><td colspan="2" align="center"><input type="submit" value="Abschicken"></td></tr>
<tr><td></form></td></tr>
</table>
LG Daniel -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
geht nicht.
Wenn du als <form action= ein mailto: angibst, wird das aktuelle Mailprogramm das Users aufgerufen und dieser muss dann erstmal die Mail mit diesem Mailprogramm verschicken.
Und Formulardaten werden IMMER nach dem Muster
" name=wert " abgeschickt. Du kannst das " name= " nicht wegfiltern, weil es gegen das Konzept von Varibeln versto?en w?rde.
Daher verwende besser ein php-script, das dann f?r dich die Mail verschickt. Frag daf?r nochmal im PHP & MySQL - Forum nach. -
Jo das geht nicht wie blady sagte! hier mal ein script wie dus mit PHP machst:
Hier jetzt der Script:
<?php $email_from = "absender@domain.de"; //Absender falls keiner angegeben wurde $sendermail_antwort = 1; //E-Mail Adresse des Besuchers als Absender. 0= Nein ; 1 = Ja $name_von_emailfeld = "Email"; //Feld in der die Absenderadresse steht //$send_dat ist ein mehrdimensionales Array, in dem zuerst die Empf?ngeradresse steht, //dann die CC-Adresse, dann der Betreff und dann die URL, auf die der Besucher weitergeleitet //wird, wenn die Mail gesendet wurde und zum Schluss die URL, auf die der Besucher weitergeleitet //wird, wenn ein Fehler beim senden auftrat $send_dat = array( "dat1" => array("empf@domain.de", "cc@empf.de", "Betreff","www.url.de/ok.php", "http://www.url.de/fehler.php"), "dat2" => array("empf@domain.de", "cc@empf.de", "Betreff2","http://www.url.de/ok.php", "http://www.url.de/fehler.php"), ); //Diese Felder werden nicht in der Mail stehen $ignore_fields = array('send_index','Submit','senden_y'); //Hier wird ausgehw?hlt, welcher "Datensatz" aus $send_dat die Mail bekommt $send_index = $HTTP_POST_VARS['send_index']; //Wenn kein send_index gesetzt wurde, bekommt der 1 Datensatz die Mail if ($send_index!="") { $st="$send_index"; } else { $st="dat1"; } $mailto = $send_dat[$st][0]; //An diese Adresse geht die Email $mail_cc = $send_dat[$st][1]; //Das ist der CC-Empf?nger $subject = $send_dat[$st][2]; //Betreff der Mail //Datum, wann die Mail erstellt wurde $name_tag[0] = "Sonntag"; $name_tag[1] = "Montag"; $name_tag[2] = "Dienstag"; $name_tag[3] = "Mittwoch"; $name_tag[4] = "Donnerstag"; $name_tag[5] = "Freitag"; $name_tag[6] = "Samstag"; $num_tag = date( "w"); $tag =$name_tag[$num_tag]; $jahr = date( "Y"); $n = date( "d"); $monat = date( "m"); $time = (date("H:i")); //Erste Zeile unserer Email $msg = ">> Gesendet am $tag, den $n.$monat.$jahr - $time Uhr <<<br><br>"; //Hier werden alle Eingabefelder abgefragt while (list($name,$value) = each($HTTP_POST_VARS)) { if (in_array($name, $ignore_fields)) { continue; //Ingnore Feld wird nicht in die Mail eingef?gt } $msg .= ">> $name << <br>$value<br><br>"; } $msg = str_replace("<br>", "\n", $msg); $msg = stripslashes($msg); //E-Mail Adresse des Besuchers als Absender if ($sendermail_antwort==1 and isset($HTTP_POST_VARS["$name_von_emailfeld"])) { $email_from = $HTTP_POST_VARS["$name_von_emailfeld"]; } $header="From: $email_from"; if (!empty($mail_cc)) { $header .= "\n"; $header .= "Cc: $mail_cc"; } $mail_senden = mail ($mailto,$subject,$msg,$header); //Weiterleitung, hier konnte jetzt per echo auch Ausgaben stehen if($mail_senden == true) { Header("Location: ".$send_dat[$st][3]); //Mail wurde gesendet } else { Header("Location: ".$send_dat[$st][4]); //Fehler beim Senden } ?>
Die Erkl?rung
Als erstes geben wir eine g?ltige Absenderadresse, am besten die vom Server selber an, denn manche Mailanbieter (z.B. GMX) ben?tigen eine g?ltige Mailadresse als Absendern. In $sendermail_antwort = 1; geben wir an, ob der Wert aus dem Feld Email ($name_von_emailfeld) als Absender gelten soll.
$send_dat
$send_dat ist ein mehrdimensionales Array, sprich es ist ein Array, welches ein 2 Array enth?lt. Dies 2. Array enth?lt die Werte, die f?r die Mail wichtig ist.
Empf?nger, CC-Empf?nger, Betreff, Zieladresse wenn Mail gesendet wurde, Zieladresse wenn ein Fehler auftrat.
Falls du 2 Formular hat, und die sollen einen anderen Datensatz benutzen, dann musst du ein hidden Feld haben mit dem Namen: send_index, und dieser muss dann z.B. den Wert haben: dat2.
Du kannst mehrere Datens?tze anlegen, indem du einfach folgendes Kopierst, und nach dem letzen Datensatz wieder einf?gst:
"dat1" => array("empf@domain.de", "cc@empf.de", "Betreff","www.url.de/ok.php", "http://www.url.de/fehler.php"),
Hierbei musst du nur dat1 ?ndern, und aus der 1 einen anderen Wert machen, z.B. dat3. Das Feld send_index muss dann den Wert haben, damit man den Datensatz benutzt.
$ignore_fields
Hier geben wir Felder an, die nicht abgefragt werden soll, und somit tauchen sie auch nicht in der Mail auf.
$send_index
Hier fragen wir ab, wie das Feld hei?t, welches Ausw?hlt, an welchen Datensatz die Mail gehen soll. Das Feld muss send_index hei?en, und kann z.B. den Wert dat1 enthalten.
Danach ermittelt man noch das Datum und f?gt das als erstes in die Mail ein.
while (list($name,$value) = each($HTTP_POST_VARS))
{
if (in_array($name, $ignore_fields))
{
continue;
}
$msg .= ">> $name << <br>$value<br><br>";
}
Dies ist das Kernst?ck des Formmailer, denn hier fragen wir alle Felder ab, und speichern sie in $msg.
Falls ein ignore Feld dabei ist, wird es ?bersprungen.
Zum Schluss senden wir die Email und senden den Besucher an die angegebende URL weiter. Au?erdem wird ?berpr?ft, ob die Mail gesendet werden konnte.
Autor: Andavos Quelle: php-einfach.de
MfG SNEPPA -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage