• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

[ERLEDIGT] Kontaktformular mit phpmailer und ajax

jogi

Neues Mitglied
Hallo,

bei mir geht es kurz gesagt darum, dass ich versuche eine Seite zu basteln, auf der ein User Vor- und Nachnamen in eine Form eingibt, auf 'Absenden' klickt und die beiden Daten dann per Mail an mich gesendet werden. Das alles ohne einen Refresh der Seite. Und da bin ich soweit, dass man das wohl ganz gut mit ajax hinbekommen kann. Bin nun seit ein paar Tagen mit wirklich guter Literatur (und w3schools) vorangekommen, scheiter aber dennoch. Es kommt partout keine Mail im von mir festgelegten Postfach an. Anbei der Code. Ich hab meine Anmerkungen im Code nicht alle entfernt. Ich bin grad ganz frisch im Thema.
Das Versenden soll mit PHPMailer durchgeführt werden. Wenn ich die mail.php mit dem HTML-Dokument laufen lasse, funktioniert auch alles. Das Problem ist im Endeffekt dann der ajax-Teil, mit dem ich das Laden der mail.php im Browser verhindern möchte.

HTML:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" name="###" content="###">
<title> Anmeldung </title>
</head>

<body style="background-color:grey">
<h1>Anmeldung</h1>
<form method="post">
 <fieldset> <legend>Anmeldung</legend>
<ul>
 <li> <label for="forname"> Vorname: </label> <input type="text" name="forname" id="forname" placeholder="Gandalf" maxlength="20" style="width:30%"> </li>
<li> <label for="lastname"> Nachname: </label> <input type="text" name="lastname" id="lastname" placeholder="der Weiße" maxlength="20" style="width:30%"> </li>
</ul>
</fieldset>
<button type="submit" onclick="sendemail()">Anmelden</button>
</form>
</body
</html>

Code:
<script>
function sendemail () {
var xhttp = new XMLHttpRequest();
xhttp.open("post", "mail.php", true);
xhttp.send();
}
</script>

PHP:
<?php
//Code zum automatischen versenden von Mails. Allerdings lässt sich hier keine Absenderadresse einstellen.
//mail("********@web.de", "Mail von PHP", "Dies ist eine automatisch generierte Mail");

/**Code zum Versenden von Mail mit PHPMailer*/
require "PHPMailerAutoload.php";
//Maileinstellungen
$mail = new PHPMailer;
$mail->CharSet = "UTF-8";
//Absender Adresse
$mail->setFrom("no-reply@***.***", "Jogi");
//Empfänger Adresse
$mail->addAddress("******@***.***", "Jogi");
//Betreff
$mail->Subject = "Erste Test Mail";
//Nachricht
$mail->Body = <<<EOT
Vorname: {$_POST["forname"]}
Nachname: {$_POST["lastname"]}
EOT;

//Nachricht abschicken &
//Code, um Fehlermeldungen angezeigt zu bekommen. Das send() ist hier schon mit drin.
if(!$mail->send()) {
  echo "Message was not sent.";
  echo "Mailer error: " . $mail->ErrorInfo;
} else {
  echo "Message has been sent.";
}

?>


Vielen Dank schon mal für eure Hilfe.

Grüße
Jogi
 
Werbung:
Teste das Script ohne Ajax, in dem du statt der POST-Variablen erst mal feste Werte einträgst und das Script direkt im Browser aufrufst.
 
Werbung:
@Sempervivum Jetzt habe ich erst richtig verstanden, was du meinst. jQuery kann mir scheinbar ne Menge Arbeit abnehmen. Damit muss ich mich aber erst einmal richtig auseinandersetzen ;).
 
@Sempervivum Ein megagroßes Danke. Mit jQuery hat's endlich hingehauen. Vielen vielen Dank für den Hinweis. Das Thema kann damit als gelöst gesetzt werden. Ich hab dafür so direkt keine Option gefunden.
 
Zurück
Oben