Ich versuche, die gesammelten Werte eines HTML-Formulars als eine E-Mail an mich über PHP & Ajax zu senden. Aus irgendeinem Grund kann ich die Benutzeroberfläche mit einem Erfolgsalarm aktualisieren, es wird jedoch keine tatsächliche E-Mail gesendet, wenn ich meinen Posteingang überprüfe. Ich habe den Eindruck, dass mein PHP-Skript möglicherweise schlecht strukturiert ist, denn wenn ich die Ergebnisse meiner js-Funktion protokolliere, wurden alle Formularwerte korrekt erfasst. HierWie sollte ich dieses PHP-Mailing-Skript richtig strukturieren?
ist die JS:
function _(id){ return document.getElementById(id); };
function submitForm(){
var formdata = new FormData();
formdata.append("first-name", _("first-name").value);
formdata.append("last-name", _("last-name").value);
formdata.append("email", _("email").value);
formdata.append("subject", _("subject").value);
formdata.append("message", _("message").value);
var ajax = new XMLHttpRequest();
ajax.open("POST", "email_me.php");
ajax.onreadystatechange = function() {
if(ajax.readyState == 4 && ajax.status == 200) {
if(ajax.responseText == "success"){
alert("Hey! It Worked!!");
} else {
// display error
}
}
}
ajax.send(formdata);
// Display the key/value pairs
for (var pair of formdata.entries()) {
console.log(pair[0]+ ', ' + pair[1]);
}
}
Und hier ist das PHP-Skript (email_me.php Datei)
<?php
if(isset($_POST['first-name'], $_POST['last-name'], $_POST['email'], $_POST['subject'], $_POST['message'])){
$name = $_POST['first-name'];
$email = $_POST['email'];
$m = nl2br($_POST['message']);
$to = "[email protected]";
$from = $email;
$subject = $_POST['subject'];
$message = '<p>'.$m.'</p>';
$headers = "From: $from\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\n";
if(mail($to, $subject, $message, $headers)){
echo "success";
} else {
echo "The server failed to send the message. Please try again later.";
}
}
?>
Was ist scheint das Problem zu sein? Ich laufe die aktuelle Version von Apache mit einem localhost, mit MAMP Pro btw.
Hier sind die Server-Logs:
Marker - 23. August 2016, 12.34.32
23. August 12.35.24 MacBookAir postfix/master [7884]: dämon gestartet - version 2.11.0, konfiguration/etc/postfix Aug 23 12:36:24 MacBookAir postfix/master [7884]: master exit time ist angekommen
Aug 23 12:36:24 MacBookAir postfix/master [7885]: Daemon gestartet - Version 2.11.0, Konfiguration/etc/postfix Aug 23 12:37:24 MacBookAir Postfix/Master [7885]: Master-Ausfahrt Zeit ist angekommen Aug 23 12:37:24 MacBookAir r Postfix/Master [7886]: Daemon gestartet - Version 2.11.0, Konfiguration/etc/postfix
Mögliche Duplikat [PHP Mail-Formular nicht vervollständigen das Versenden von E-Mail] arbeiten (http://stackoverflow.com/questions/ 24644436/php-mail-formular-doesnt-complete-sending-e-mail) –
Das Problem tritt auf, wenn Sie eine E-Mail von der E-Mail des Benutzers senden, eine E-Mail von einer konstanten E-Mail senden und die E-Mail des Benutzers in einer Nachricht behalten. $ header = "Von: [email protected] \ r \ n"; –
können Sie möglicherweise meinen Code bearbeiten, um ein Beispiel dafür zu zeigen? @ Kool-Mind –