Seite 1 von 1

#### PHP + HTML #### PHP Mailer

Verfasst: Sa 12.Nov, 2005 18:08
von Darezettl
Hm, vielleicht habt ihr ja ne Idee, warum mir der scheiß keine emails verschickt.

Zur Aufgabe:
Ich habe ein html Formular, welches die Besucher ausfüllen sollen, der Inhalt soll an ne email addresse geschickt werden, (Braucht nicht aufm Server gespeichert zu werden), außerdem soll nach dem wegschicken irgend ne "erfolgreich versendet" seite kommen. Desweiteren soll der sender ne bestätigungs e mail bekommen, das ich daten erhalten habe...
hier der html code (der noch weiter ausgearbeitet werden soll, aber zum testen glangts)
<HTML>
<HEAD>
<TITLE>Mail-Test</TITLE>
</HEAD>

<BODY>
<form action="mail_it2.php" method="post">
Dein Name: <input type="text" name="name"><br>
Deine E-Mail-Adresse: <input type="text" name="mail"><br>
<input type="submit" value="OK">
</form>
</BODY>
</HTML>
und hier die php datei, aus der die eigentlichen funktions-anweisungen stammen:
(ich glaub dort liegt der hund begraben)
<?php

function mail_senden($name, $mail) {
// Zuerst wird der Text zusammengesetzt
$text = "Hallo " . $name . ",\n" ;
$text .= "Ihre Bestellung wird bearbeitet. In Kürze erhalten Sie die Rechung." ;
// Zusätzlich wird noch der Header definiert
$header = "From: \"PHP-Test\" <diggler64@hotmail.de>" ;
mail($mail, "PHP-Test", $text, $header) ; ?>

<h1>Die E-Mail wurde erfolgreich verschickt.</h1><br>
<a href="javascript:history.go(-2);">Zurück</a>

<?php
} //Funktion mail_senden() zu Ende

function fehler() {
//Keine PHP-Befehle erforderlich ?>

<h1>Fehlende Eingabe !</h1><br>
<a href="javascript:history.back();">Zurück</a>

<?php
} // Funktion fehler() zu Ende

?>
<HTML>
<HEAD>
<TITLE>Bestellung erfolgreich</TITLE>
</HEAD>

<BODY>
<?php

Eigentlicher Kern des Skripts
if ( empty($name) || empty($mail) ) {
fehler() ;
} else {
mail_senden($name, $mail) ;
}

//?>
<h1>Die E-Mail wurde erfolgreich verschickt.</h1><br>
<a href="javascript:history.go(-2);">Zurück</a>
</BODY>

</BODY>
</HTML>
mein Problem ist, dass er immer in die if schleife geht und mir dann ausgibt Fehlende Eingabe, obwohl alle 2 Textboxen ausgefüllt waren.
Habs auch schon mal ohne die Prüfung ob Textboxen ausgefüllt sind getestet, da komm ich sicher auf die seite Bestellung erfolgreich, aber er sendet mir keine email zu mit den daten.....

Hab wohl nur nen kleinen fehler, weil er ja bloß nicht den email versand ausführt, vielleicht seht ihr ihn ja.....

Verfasst: Sa 12.Nov, 2005 19:32
von oxpus
Tja, Du Übernimmst ja auch $email und $name nicht aus dem Formular. Dann kann auch nichts verarbeitet werden ;)
Das müsste so geschehen:

Code: Alles auswählen

$email = htmlspecialchars($HTTP_POST_VARS['mail']);
$name = htmlspecialchars($HTTP_POST_VARS['name']);
Und eingesetzt werden sollte das an den Anfang der php-Datei, also direkt eine Zeile tiefer nach "<?".

Und btw: Verwende für Code besser immer den CODE-BBCode. Damit wird das ganze besser lesbar ;)

Verfasst: Mo 14.Nov, 2005 19:03
von Darezettl
JO jo in da House ::::

also mit folgendem Code werden zwei emails geschickt:
die erste, an den "kunden" bzw. ausfüller des Formulars.
der inhalt lautet, dass praktisch seine bestellung verschickt wurde und bearbeitet wird.

die zweite geht wieder an ihm,
der inhalt ist, das, was ich aber haben will, sprich, dass Herr x mit der email addy bestellt hat...

Also schreiben tut er mir schon die gewünschten emails mit dem richtigen inhalt,
aber leider schickt er alle zwei mails an den ausfüller des Formulars.

wobei email 1 an ihn gehen sollte
und die 2te an mich bzw. webmaster. (und nicht an ihn)

keine ahnung warum die zweite im prog code ist das die mail_to_webmaster()
zum "Kunden" geschickt wird und nicht zu mir

hier jetzt der php code......

Code: Alles auswählen

<?php

 $mail = htmlspecialchars($HTTP_POST_VARS['mail']);
 $name = htmlspecialchars($HTTP_POST_VARS['name']);

 function mail_senden($name, $mail)
 {
  // Zuerst wird der Text zusammengesetzt den der Kunde erhält
  $text = "Hallo " . $name . ",\n" ;
  $text = "Wir haben Ihre Bestellung erhalten, sie wird in kürze bearbeitet werden. In einer zweiten email werden Sie die Rechnung erhalten.". ",\n" ;

  // Zusätzlich wird noch der Header definiert
  $header = "From: \"Benefiz-Konzert.com\" <diggler64@hotmail.de>" ;
  mail($mail, "Ihre Bestellung", $text, $header) ;
 }   // Funktion mail_senden() zu Ende



 // Daten des ausgefüllten Formulars an Webmaster schicken
  $to = "diggler64@hotmail.de";

  function mail_to_webmaster($name, $to)
  {
     // Zuerst wird der Text zusammengesetzt den Webmaster erhält
     $text = " Bestellung erhalten von " .$name . ",\n" ;

     // Zusätzlich wird noch der Header definiert
  $header = "From: \"Benefiz-Online-Shop\" <diggler64@hotmail.de>" ;
  mail($to, "Bestellung erhalten", $text, $header) ;
     }        // Funktion mail_to_webmaster() zu Ende


  ?>


 <?php
 //}

 function fehler() {
  //Keine PHP-Befehle erforderlich ?>

 <h1>Fehlende Eingabe !</h1><br>
 <a href="javascript:history.back();">Zurück</a>

 <?php
 } // Funktion fehler() zu Ende

 ?>
 <HTML>
 <HEAD>
  <TITLE>Bestellung erfolgreich</TITLE>
 </HEAD>

 <BODY>


 <?php
  // Eigentlicher Kern des Skripts
 if ( empty($name) || empty($mail) ) {
  fehler() ;
 } else {
  mail_senden($name, $mail) ;
  mail_to_webmaster($to, $mail);
 }

 ?>
  <h1>Die Bestellung wurde erfolgreich verschickt.</h1><br>
 <a href="javascript:history.go(-2);">Zurück</a>
 </BODY>

 </BODY>
 </HTML>

Verfasst: Mo 14.Nov, 2005 22:30
von oxpus
Vielleicht

Code: Alles auswählen

mail_to_webmaster($to, $mail);
mal so schreiben:

Code: Alles auswählen

mail_to_webmaster($name, $to);
;)