PHP form validation Ajax XMLhttp verzend geen mail naar mijn mailbox.
Ik heb een simpele test mail gemaakt en die getest. In de browser zie ik gewoon dat alles werkt, maar gek genoeg ontvang ik geen mail in mijn inbox. Lopen Googlen en alles getest, zoals uitgebreide headers toevoegen in PHP, maar dat lijkt allemaal niets uit te maken.
<div class="container-fluid">
<form method="POST" action="send_email.php" id="contact-form" onsubmit="submitForm(); return false;">
<h2 id="header-contact">Contact</h2>
<label>
<span class="contact">Your Email</span>
<input id="email" class="contact_input" type="text" name="email" placeholder="[email protected]">
</label>
<label>
<span class="contact">Subject</span>
<input id="subject" class="contact_input contactinfo" type="text" name="message">
</label>
<label>
<span class="contact">Message</span>
<textarea id="message" name="comment" class="contact_input contactinfo"></textarea>
</label>
<label>
<input id="button" type="submit" value="SEND">
<br>
<span id="status"></span>
</label>
</form>
</div>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
if (isset($_POST["email"]) && isset($_POST["subject"]) && isset($_POST["message"])) {
$email = $_POST["email"];
$subject = $_POST["subject"];
$message = $_POST["message"];
$to = "[email protected]";
$from = $email;
$subject = "Contact From Message";
$message = "<b>Email Address:</b> ".$email. " <br><b>Subject: </b> ".$subject." <p> ".$message." </p>";
$headers = 'From: [email protected]' . "\r\n" .
'Reply-To: [email protected]' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
if (mail($to, $subject, $message, $from)) {
echo "success";
} else {
echo "The server failed to send the message. Please try again later.";
}
}
?>
if (isset($_POST["email"]) && isset($_POST["subject"]) && isset($_POST["message"])) {
$email = $_POST["email"];
$subject = $_POST["subject"];
$message = $_POST["message"];
$to = "[email protected]";
$from = $email;
$subject = "Contact From Message";
$message = "<b>Email Address:</b> ".$email. " <br><b>Subject: </b> ".$subject." <p> ".$message." </p>";
$headers = 'From: [email protected]' . "\r\n" .
'Reply-To: [email protected]' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
if (mail($to, $subject, $message, $from)) {
echo "success";
} else {
echo "The server failed to send the message. Please try again later.";
}
}
?>
function _(id) {
return document.getElementById(id);
}
function submitForm() {
_("button").disbled = true;
_("status").innerHTML = "Please wait...";
var formdata = new FormData();
formdata.append( "email", _("email").value );
formdata.append( "subject", _("subject").value );
formdata.append( "message", _("message").value );
var ajax = new XMLHttpRequest();
ajax.open("POST", "resume/send_email.php"); // parameter: method, url, boolean (optional)
ajax.onreadystatechange = function() {
if(ajax.readyState == 4 && ajax.status == 200) {
if(ajax.responseText == "success"){
_("status").innerHTML = '<p>Thanks your message has been sent successfully.</p>';
} else {
_("status").innerHTML = ajax.responseText;
_("button").disabled = false;
}
}
}
ajax.send(formdata);
}
Verder moet de vierde parameter van je mail() $headers zijn, en geen $from. Gebruik bij voorkeur phpMailer.
Dus je hebt gekeken naar SPF? Het incorrecte gebruik van mail? DKIM? Steekwoorden die kunnen leiden tot een spam trigger? Hoe je headers werkelijk hoort op te bouwen? (hint: een from/reply-to adres bestaat uit een naam en een e-mailadres tussen <>, ook zonder naam hoort het adres tussen <>, ook is x-mailer onzinnig, want deze wordt al toegevoegd door PHP)
Maak eerst gewoon eens een losstaand mail script, en kijk wat dat doet voordat je het probeert te verwerken in een volledig script. Dat maakt debugging *veel* eenvoudiger.