Morgen oder doch besser Gute Nacht! :o
Es ist kurz nach 4 Uhr morgens und ich steh total auf der Leitung!
Ich versuche gerade ein Mailformular zu programmieren, wobei die Mailadresse des Empfängers ändert.
Sprich man klickt auf einen Link und die jeweilige Mailadresse wird mit übergeben, das geschieht auch, aber das Mailscript erkennt den Empfänger nicht! :cry
Also ich übergeb die Mailadresse folgendermassen:
........mail.php?to=$mail
Wobei Mail immer die jeweilige Mailadresse übergibt,
im Mailscript ist der Empfänger folgendermassen angegeben:
$emailadresse="$to";
Aber anscheinend stimmt da was nicht ganz!
Vielleicht hat ja jemand nen Tip, würde es nämlich dringend benötigen!
Danke!!
[Editiert am 24/8/2003 von _Gerry_]
Das sind sehr wenig Informationen.
Es sind folgende Fragen zu klären:
- ist der Wert $mail wirklich gefüllt?
Mach dazu mal in der nehmenden Funktion folgendes rein:
echo "Mail=$mail";
exit;
Nun wird der Wert, so wie er übergeben wurde, ausgegeben
- Wird der Wert in der Deklaration der Funktion überhaupt erwartet?
$mail scheint Null oder Leer zu sein.
Hallo !
Die Parameterübergabe ist so schon richtig.
Die Funktioniert aber nur, wenn
register_globals=on gesetzt ist.
dann werden namlich die über HTTP POST gesendeten Variablen (to)
automatisch GLOBAL gesetzt und kónnen via $to genutzt werden.
Wenn register_globals=off gesetzt ist, musst du die Variable $to noch per Hand füllen (im Mailscript). Am einfachsten machst du das SO :
Zitat$to = (empty($_REQUEST['to'])) ? "" : $_REQUEST['to'];
MfG
jubilee
In $mail möchte aber auch was drin sein.
Mein Betrag war nicht als Kritik gemeint, sondern als Ergänzung.
Habe ich auch nicht anders verstanden.
Hey ihr!
Danke erstmals für eure Antworten!
Also register_globals=on ist gesetzt,
die Mailadresse wird auch richtig übergeben,
aber dennoch funktioniert da etwas nicht ganz so wie ich es will!
Ich poste mal die ganze mail.php, damit ihr deren Aufbau seht:
<?php
$emailadresse="$to";
$nachricht_OK="Nachricht erfolgreich gesendet";
$nachricht_NOK="Es wurden nicht alle Felder ausgefüllt";
if ($submit)
{
if ($betreff=="" || $name=="" || $email=="" || $kommentar=="")
{
echo "$nachricht_NOK";
exit();
}
else
{
echo "$nachricht_OK";
mail("$emailadresse","$betreff", "Betreff:\t $betreff\nName:\t\t $name\nE-Mail:\t\t $email\nKommentar:\t $kommentar,\n\n\n$REMOTE_ADDR\n$REMOTE_HOST\n$HTTP_USER_AGENT","From: $email");
exit();
}
}
?>
<form action="<?php echo $PHP_SELF; ?>" method="post" name="formmail">
<table border="0" cellpadding="0" cellspacing="0" width="400">
<tr>
<td width="100" height="25" valign="middle">
<p>Name:</p>
</td>
<td>
<input type="text" name="name" maxlength="50" size="25">
</td>
</tr>
<tr>
<td width="100" height="25" valign="middle">
<p>E-Mail:</p>
</td>
<td>
<input type="text" name="email" maxlength="50" size="25">
</td>
</tr>
<tr>
<td width="100" height="25" valign="middle">
<p>Betreff:</p>
</td>
<td>
<input type="text" name="betreff" maxlength="50" size="25">
</td>
</tr>
<tr>
<td width="100" valign="top">
<p>Nachricht:</p>
</td>
<td>
<textarea cols="14" rows="4" name="kommentar"></textarea>
</td>
</tr>
<tr>
<td>
<p> </p>
</td>
<td height="25">
<input type="Submit" name="submit" value="Senden">
</td>
</tr>
</table>
</form>
Wie gesagt die Mailadresse wird mit folgenden Link übergeben:
...../mail.php?to=$mail
[Editiert am 24/8/2003 von _Gerry_]
Versuche mal anstelle von
$emailadresse="$to";
folgendes:
$emailadresse=$to;
Gruß
Ralf
[Editiert am 24/8/2003 von Ralf_W]
Hi _Gerry_ :)
Warum es bei Dir nicht geht, wenn register_globals=ON ist, kann ich im Moment nicht testen. Weil auf meinem localhost ist OFF ;)
Musste es zum testen ziemlich abändern, nachfolgend der funktionierende code:
<?php
foreach ($_POST as $key => $value) {
print "$key = $value"; /// zur Kontrolle was kommt ;)
}
$emailadresse = (isset($_POST['to'])) ? $_POST['to'] : "";
$nachricht_OK="Nachricht erfolgreich gesendet";
$nachricht_NOK="Es wurden nicht alle Felder ausgefüllt";
if (isset($_POST['submit'])){
if (empty($_POST['betreff']) || empty($_POST['name']) || empty($_POST['email']) || empty($_POST['kommentar'])) {
echo $nachricht_NOK;
exit();
}
else{
echo $nachricht_OK;
mail($emailadresse,$_POST['betreff'], "Betreff:\t ".$_POST['betreff']."\nName:\t\t".$_POST['name']."\nE-Mail:\t\t ".$emailadresse."\nKommentar:\t".$_POST['kommentar'].",\n\n\n".$_SERVER['REMOTE_ADDR']."\n".getenv('REMOTE_HOST')."\n".$_SERVER['HTTP_USER_AGENT']."","From:".$emailadresse."");
exit();
}
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="formmail">
........ der Rest ist ok.....
[Editiert am 24.8.2003 von SiteAdmin Andi]
Hey Andi.
Danke für dein bemühen, aber es funktioniert dennoch nicht! :cry
Die Mail kommt einfach nicht an!
Nach Absenden der Nachricht erscheind nun folgender text:
name = Gerry
email = Gerry@finddich.net
betreff = Test
kommentar = Mal gucken ob es nun geht
submit = Senden
Nachricht erfolgreich gesendet
Aber wie gesagt es kommt keine Mail an!
Hast du
@mail($emailadresse,$_POST['betreff'], "Betreff:\t
".$_POST['betreff']."\nName:\t\t".$_POST['name']."\nE-Mail:\t\t
".$emailadresse."\nKommentar:\t".$_POST['kommentar'].",\n\n\n".$_SERVER['RE
MOTE_ADDR']."\n".getenv('REMOTE_HOST')."\n".$_SERVER['HTTP_USER_AGENT']."",
"From:".$emailadresse."");
mal probiert?
Hey Ralf.
Ändert leider auch nichts!
Es kommt keine Mail an!
Ganz dumme Frage.
Aber einen E-Mail-Server hast Du ja, oder ?
Ist in der php.ini auch konfiguriert (sendmail_path = bzw. SMTP = +
sendmail_from = )
MfG
jubilee
uuups, habe nur auf die Variablen gesehen, auf den mail-Befehl, bzw. ob die mail ankommt, habe ich nicht geachtet....
Das funzt auf meinem localhost sowieso nicht ;)
Schreibe mal vor den mail-Befehl:
error_reporting(E_ALL);
Eventuell ist am mailheader was falsch, bzw. der mailserver akzeptiert die mailadresse nicht...
lass mal das weg:
, "From:".$emailadresse.""
oder gib da eine für den mailserver akzeptierte emailadresse an, z.B. Deine eigene
@jubilee
sendmail_from me@localhost.com me@localhost.com
sendmail_path /usr/sbin/sendmail -t -i /usr/sbin/sendmail -t -i
short_open_tag On On
SMTP localhost localhost
@Andi
Okay, hab den error Befehl eingefügt, es kommt keine Meldung.
Auch die beiden anderen Varianten (weglassen, bzw Mailadresse einsetzen) haben nichts gebracht! :cry
Irgendwie ist das ganze zum durchdrehen!
Das machst Du doch auf Deinem Server.
Wurde die Mail an den Mailserver übergeben, so gibt es auch eine Logdatei.
Schau mal was die sagt.
Oder gib mal eine Mailadresse von dem localen Server an.
Hmmm, das ganze läuft aber unter Linux, oder?
Ja ich mache es auf dem Server, also nicht Local.
Auf die Logdatein hab ich leider im Moment keine Einsicht.
Ja ess handelt sich dabei um ein Linux Serversystem.
Hallo !
Sach mal, Du übergibts das mit
...../mail.php?to=$mail
Da kommt aber gar kein mail in deinem Formular
vor sondern nur email ???
Zitat <td>
<input type="text" name="email" maxlength="50" size="25">
</td>
Das würd ich mal anpassen ....
MfG
jubilee
[Editiert am 24/8/2003 von SiteAdmin jubilee]
[Editiert am 24/8/2003 von SiteAdmin jubilee]
Ich habe es mal auf meinem schwachbrüstigen Linuxserver ausprobiert.
Exim schimpft:
2003-08-24 19:51:36 19qz1c-0002Nn-00 Rewrite of www-data@wagenknecht.home yielded unparseable address: empty address in address
2003-08-24 19:51:36 19qz1c-0002Nn-00 Rewrite of www-data@wagenknecht.home yielded unparseable address: empty address in address
2003-08-24 19:51:36 19qz1c-0002V3-00 <= <> R=19qz1c-0002Nn-00 U=mail P=local S=1077
2003-08-24 19:51:36 19qz1c-0002V3-00 ** jwagenknecht@t-online.de: unrouteable mail domain "t-online.de"
2003-08-24 19:51:36 19qz1c-0002V3-00 Frozen (delivery error message)
----------------------------------------------------------
Das:
www-data@wagenknecht.home
nimmt T-Offline natürlich nicht an.
Also das "From" Feld müsste noch geändert werden.
Halt nur aus meiner Sicht!
Das $mail wird aus einer Datenbank ausgelesen und dann nur mittels dem Link:
....../mail.php?to=$mail
übergeben!
Das sieht dann folgendermassen aus:
...../mail.php?to=Gerry@frieds4you.org
Wobei eben die Mailadresse sich ändern kann, jenachdem auf welchen Link man klickt.
Das "email" ist dann die Mailadresse des Absenders! ;)
Hmmm ......
Wie wäre es denn, wenn Du uns jetzt endlich mal den kompletten
Quellcode zeigen würdest.
???
Anders :
Wenn du das so einträgst :
mail.php?to=Gerry@frieds4you.org kommt das dann an ???
nochwas: Muss das vorher urlencoded werden damit das über http rübergeht ??
MfG
jubilee
[Editiert am 24/8/2003 von SiteAdmin jubilee]
Hab ich zwar schon, aber was soll`s! :D
Zuvor:
<?php
$emailadresse="$to";
$nachricht_OK="Nachricht erfolgreich gesendet";
$nachricht_NOK="Es wurden nicht alle Felder ausgefüllt";
if ($submit)
{
if ($betreff=="" || $name=="" || $email==""
|| $kommentar=="")
{
echo "$nachricht_NOK";
exit();
}
else
{
echo "$nachricht_OK";
mail("$emailadresse","$betreff", "Betreff:\t $betreff\nName:\t\t
$name\nE-Mail:\t\t $email\nKommentar:\t
$kommentar,\n\n\n$REMOTE_ADDR\n$REMOTE_HOST\n$HTTP_USER_AGENT","From:
$email");
exit();
}
}
?>
<form action="<?php echo $PHP_SELF; ?>" method="post"
name="formmail">
<table border="0" cellpadding="0" cellspacing="0" width="400">
<tr>
<td width="100" height="25" valign="middle">
<p>Name:</p>
</td>
<td>
<input type="text" name="name" maxlength="50" size="25">
</td>
</tr>
<tr>
<td width="100" height="25" valign="middle">
<p>E-Mail:</p>
</td>
<td>
<input type="text" name="email" maxlength="50" size="25">
</td>
</tr>
<tr>
<td width="100" height="25" valign="middle">
<p>Betreff:</p>
</td>
<td>
<input type="text" name="betreff" maxlength="50" size="25">
</td>
</tr>
<tr>
<td width="100" valign="top">
<p>Nachricht:</p>
</td>
<td>
<textarea cols="14" rows="4" name="kommentar"></textarea>
</td>
</tr>
<tr>
<td>
<p> </p>
</td>
<td height="25">
<input type="Submit" name="submit" value="Senden">
</td>
</tr>
</table>
</form>
Nach Tip von Andi auf folgendes geändert:
<?php
foreach ($_POST as $key => $value) {
print "$key = $value<br>"; /// zur Kontrolle was kommt
}
$emailadresse = (isset($_POST['to'])) ? $_POST['to'] : "";
$nachricht_OK="Nachricht erfolgreich gesendet";
$nachricht_NOK="Es wurden nicht alle Felder ausgefüllt";
if (isset($_POST['submit'])){
if (empty($_POST['betreff']) || empty($_POST['name']) ||
empty($_POST['email']) || empty($_POST['kommentar'])) {
echo $nachricht_NOK;
exit();
}
else{
echo $nachricht_OK;
error_reporting(E_ALL);
mail($emailadresse,$_POST['betreff'], "Betreff:\t
".$_POST['betreff']."\nName:\t\t".$_POST['name']."\nE-Mail:\t\t
".$emailadresse."\nKommentar:\t".$_POST['kommentar'].",\n\n\n".$_SERVER['REMOTE_ADDR']."\n".getenv('REMOTE_HOST')."\n".$_SERVER['HTTP_USER_AGENT']."","From:".$emailadresse."");
exit();
}
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="formmail">
<table border="0" cellpadding="0" cellspacing="0" width="400">
<tr>
<td width="100" height="25" valign="middle">
<p>Name:</p>
</td>
<td>
<input type="text" name="name" value="<?php echo"$name"; ?>" maxlength="50" size="25">
</td>
</tr>
<tr>
<td width="100" height="25" valign="middle">
<p>E-Mail:</p>
</td>
<td>
<input type="text" name="email" maxlength="50" size="25">
</td>
</tr>
<tr>
<td width="100" height="25" valign="middle">
<p>Betreff:</p>
</td>
<td>
<input type="text" name="betreff" maxlength="50" size="25">
</td>
</tr>
<tr>
<td width="100" valign="top">
<p>Nachricht:</p>
</td>
<td>
<textarea cols="14" rows="4" name="kommentar"></textarea>
</td>
</tr>
<tr>
<td>
<p> </p>
</td>
<td height="25">
<input type="Submit" name="submit" value="Senden">
</td>
</tr>
</table>
</form>
Nein, Du verstehst mich nicht.
Der Teil mit der Abfrage der Datenbank wo ja die Mailadresse
herkommt.
Das meinte ich ;)
Ausserdem kannst Du mal die versch. Header mit /r/n anstatt nur /n
trennen. Einige MTA's machen sonst Ärger.
MfG
jubilee
In meinen Scripts klappts folgendermassen:
@mail ($emailadresse, $betreff, $mailtext, "From: absender@domain.de");
[Editiert am 24/8/2003 von Ralf_W]
Ich habe das von _Gery_ so geändert:
$emailadresse = (isset($_POST['to'])) ? $_POST['to'] : "";
echo "EMai: $emailadresse";
exit;
Übergeben habe ich mail.php?to=jwagenknecht@t-online.de
Und er steigt wo ich es wollte aus, aber $emailadresse ist leer.
Nur so die Feststellungen welche ich gemacht habe.
Vielleicht hilft es ja.
Ähmmm.....
Was hat der Teil mit der Abfrage damit zu tun,
den die Mailadresse wird ja richtig ausgelesen.
Nur das Mailscript selbst hat anscheinend Probleme damit die Mailadress zu verstehen.
Na, per mail.php?to=adresse wird ja der Absender übergeben.
Und der sollte schön in den From teil rein, oder?
Das Mailscript klappt doch. Der Absender ist aber nicht drin.
Ich habe verstanden das Du mit der Variable den Absender übergibst - der muss in From rein.
Und der liebe User Tipt die Adresse und Betreff und Text rein wo es hingehen soll.
oder sehe ich da was Falsch?
Lass doch mal den fertigen mail Aufruf ausgeben und schon sieht man das Problem.
Schittebäng.... Sorry....
Das habe ich auch übersehen. Das Eingabefeld heisst nicht to sondern email.
Also muss es so lauten:
$emailadresse = (isset($_POST['email'])) ? $_POST['email'] : "";
@Jens
Genau anderst rum.
Also mit dem Link:
..../mail.php?to=$mail
wird der EMPFÄNGER angegeben!
Im Script selbst ist der Absender mit email angeführt!
Der User gibt dann seinen Namen, seine Mailadress und seine Message ein.
[Editiert am 24/8/2003 von _Gerry_]
So wie ich es verstanden habe wirtd doch in das Feld "email" die Absender Adresse eingegeben, oder? Was passiert denn wenn in der mail() Zeile anstelle der variablen direkt eine empfänger adresse angegeben wird?
ZitatWas hat der Teil mit der Abfrage damit zu tun,
Das wäre um zu verhindern, das jeder Fragen muss :
Was das Script soll, wie das Script arbeitet, wo evt. noch Variablen herkommen etc...
Wenn man nicht 20 x Nachgefragt hätte, hättest du uns dann gesagt wo die Variable $mail auf einmal herkommt ?
Wenn Du angst hast, das Dir jemand Dein Script klaut, das musst Du es halt selbst reparieren.
MfG
[Editiert am 24/8/2003 von SiteAdmin jubilee]
Wie bereits gesagt jubilee, es wird eigentlich nur die Mailadresse aus der Datenbak geladen, das wie und warum ist da doch eigentlich egal.
Hat nichts damit zu tun das jemand das Script kopiert oder so, wäre mir auch egal, aber es hat mit dem eigentlichen Problem nichts zu tun, da diese Funktion ja einwandfrei arbeitet.
Die mail.php hab ich ja zu 100% gepostet.
Es dient dazu ein einziges Mailscript für unzählige Mailadressen zu haben.
Wobei die Mailadresse des Empfängers eben per Link übergeben wird.
Gibt es doch schon.
Ach und wo?? :D
Als Formular nicht. Aber die Funktion als solches schon. Vor allem für hier angepaßt.
Ich für meinen Teil mißbrauche immer die VPK eigenen Funktionen.
Naja, ich brauch es aber nicht für das VKP.
Bei mir hatte es doch finktioniert.
Einziges Problem war das From Feld.
Es gibt Mailserver die sind da genau.
Vielleicht nimmt sich ja einer mal dem Problem an und alles ist ok.
Hmmmmm .....
müssen wir uns mal in der nächsten Woche etwas mit beschäftigen.
(Sprich: wenn besser ausgeschlafen ...)
MfG
jubilee
[Editiert am 24/8/2003 von SiteAdmin jubilee]
Wart mal .......
Zuerst kommt die Abfrage der Datebank.
Da bekommt Du die Mailadresse ($mail). Dann gehts über
....mail.php?to=$mail weiter an das php-script mail.php.
Da wird die E-mail-Adresse die in $to ist in die Variable
$emailadresse gespeichert. Dann wird über das Form (in dem der User ja noch was eintragen soll) die
mail.php nochmal aufgerufen um die mailfunktion durchzuführen die ja erst dann geht, wenn $submit gesetzt ist.
Dabei wird die Variable $emailadresse aber ja wieder neu gesetzt
( $emailadresse="$to" ) . $to ist in diesem Fall aber ja gar nicht gesetzt, weil nicht benutzt. Benutzt wird to ja nur, über die Routine wo die Datenbankabfrage drin ist.
So wird da ein Schuh draus.....
MfG
jubilee
:D Manoh......
An das hab ich ehrlich gesagt gar nicht gedacht! *gg*
Werd mich dann gleich einmal damit beschäftigen das die Mailadresse auch beim 2. mal mit übergeben wird! ;)
Dank dir.
Kannst ja mal versuchsweise ein weiteres Input-Feld mitlaufen lassen -->
Zitat<input type="hidden" name="to" value=$emailadresse>
und schauen was passiert---
MfG
jubilee
;)
Darum ist es auch immer wichtig, die Scripte in ihrem
gesammten Funktionsablauf übersehen zu können ....
Okay, hab es nun so abgeändert:
<input type="hidden" name="emailadresse" value="<?php echo"$to";?>">
Weil die Variable emailadresse wird ja benötig und mittels $to angegeben.
Die Adresse des Empfängers wird nun auch beim 2. Aufruf der mail.php mit übergeben,
aber dennoch kommt keine Mail an.
Nein nein nein
Du brauchst doch eine Variable $to die die Variable
$emailadresse füllt.
Zitat<input type="hidden" name="emailadresse" value="<?php
echo"$to";?>">
damit hast Du jetzt eine Variable $emailadresse die mit dem richtigen wert gefüllt ist, aber beim Aufruf des Scriptes immer noch mit $to überschrieben wird (es sei denn, Du hast am Anfang des Scriptes dieses entfernt :
$emailadresse=$to )
??
MfG
jubilee
Schön wäre es jetzt auch zu wissen,
ob es denn jetzt geht.
?????
MfG
jubilee
Upsi.......
Hab eigentlich geantworte, aber anscheinend ist was schief gelaufen!
*sorry*
Also ich hab es auf eine andere weise gelöst, hab mich mal im Netz nach einen Formmailer umgesehen und den dann auf meine Wünsche angepasst.
So wird das $to auch beim 2. mal erkannt.
Danke nochmals für eure Gedult! :)
Hallo !
ZitatUpsi.......
Hab eigentlich geantworte, aber anscheinend ist was schief gelaufen!
*sorry*
Kein Problem. ist halt in Datennirwana verschwunden.
Das kann schon mal passieren....
MfG
jubilee
[Editiert am 26/8/2003 von SiteAdmin jubilee]
Naja ich schätz eher das ich mich verklickt hab! :D
Statt auf Antworten auf Post anzeigen und dann gleich das Fenster geschlossen! :o
Dafür hab ich eh das nächste Problem!
http://www.pragmamx.org/modules.php?name=eBoard&file=viewthread&tid=6765&page=1#pid34694 :cry