Ciao a tutti, ho un problemino. Quando invio la mail non viene visualizzato il messaggio di avvenuto invio o di errore. Di fatto la mail mi arriva, non appare solo il messaggio. Qualcuno per favore potrebbe aiutarmi? Grazie.
HTML:
<form class="uk-grid-medium" id="contactForm" uk-grid>
<div class="uk-width-1-1 uk-width-1-2@l uk-width-1-2@xl">
<input class="uk-input" type="text" id="name" name="name" title="inserisci solo lettere." placeholder="Nome">
</div>
<div class="uk-width-1-1 uk-width-1-2@l uk-width-1-2@xl">
<input class="uk-input" type="email" id="email" name="email" placeholder="E-mail">
</div>
<div class="uk-width-1-1">
<textarea style="height:150px;" class="uk-textarea" id="message" name="message" placeholder="Messaggio"></textarea>
</div>
<div class="uk-width-1-1 uk-width-1-2@s uk-width-1-2@m uk-width-1-2@l uk-width-1-2@xl">
<input class="uk-checkbox" type="checkbox" id="checkbox" name="checkbox" value="si">
<span>Accetto la</span>
<a class="link-privacy" href="#privacy" uk-toggle>Privacy Policy</a>
<!-- PRIVACY -->
<?php include 'assets/privacy-policy.php'; ?>
</div>
<div class="uk-width-1-1 uk-text-left@m uk-text-left@m uk-text-center">
<button class="uk-button uk-button-default uk-button-large" type="submit" id="button" onclick="sendForm()">INVIA MESSAGGIO</button>
</div>
<div class="uk-width-1-1">
<div class="uk-alert-primary" id="alert-primary" uk-alert style="display:none">
<a class="uk-alert-close" uk-close></a>
<p>invio in corso...</p>
</div>
<div class="uk-alert-warning" id="alert-warning" uk-alert style="display:none">
<a class="uk-alert-close" uk-close></a>
<p>I dati inseriti non sono corretti!</p>
</div>
<div id="result"></div>
</div>
</form>
Codice:
$("#contactForm").validate(
{
rules:
{
name: {required: true},
email: {required: true, email: true},
message: {required: true, maxlength : 1000},
},
messages:
{
name: {required: "Inserisci il nome!"},
email: {required: "Inserisci la tua email!"},
message: {required: "Inserisci il messaggio!", maxlength: "Puoi digitare massimo 1000 caratteri!"}
},
submitHandler: function(form) {
$("#alert-primary").show(); // mostra alert durante il caricamento
var data = {
name: $("#name").val(),
email: $("#email").val(),
message: $("#message").val(),
checkbox: $("#checkbox").is(":checked")
};
$.ajax({
type: 'POST',
data: data,
dataType: "html",
url: 'assets/contact.php',
success: function () {
$("#alert-primary").hide(); // nascondi alert finito di caricare
$("#result").show(); // messaggio di avvenuto invio o di errore
}
});
$("#result").show();
return false;
},
invalidHandler: function() {
$("#alert-warning").show();
},
});
PHP:
<?php
// Controllo della variabile empty
if(
empty($_POST['name']) ||
empty($_POST['email']) ||
empty($_POST['message']) ||
!filter_var($_POST['email'],FILTER_SANITIZE_EMAIL,FILTER_VALIDATE_EMAIL))
{
echo "<div class='uk-alert-danger' id='alert-danger' uk-alert>
<a class='uk-alert-close' uk-close></a>
<p>Mi dispiace si è verificato un errore. Messaggio non inviato!</p>
</div>";
}
else
{
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$checkbox = $_POST['checkbox'] == "true" ? "si" : "no";
// Creazione e-mail e invio del messaggio
$to = '[email protected]'; // <--- inserire e-mail destinatario
$email_subject = "Ti ha scritto dal tuo sito: $name";
//$email_body = "Questi sono i dettagli:\n\nNome: $name\nCognome: $surname\nEmail: $email\nTelefono: $phone\nNazionalità: $nationality\nCamera: $rooms\nData di partenza: $calendarstart\nData di arrivo: $calendarend\nMessaggio: $message\nAccettazione Privacy: $checkbox";
$email_body = <<<HTML
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<!--CORPO MAIL-->
<ul style="list-style: none; padding-left: 0;">
<li style="margin: 0 0 15px 0;">Questi sono i dettagli del messaggio:</li>
<li style="margin: 0;"><strong>Nome:</strong> $name</li>
<li style="margin: 0;"><strong>E-mail:</strong> $email</li>
<li style="margin: 0;"><strong>Messaggio:</strong> $message</li>
<li style="margin: 0;"><strong>Accettazione Privacy:</strong> $checkbox</li>
</ul>
</body>
</html>
HTML;
$headers = "Da: [email protected]\n"; // Non modificare questo indirizzo e-mail
$headers .= "Reply-To: $email";
//costruisco la header della mail
$mail_headers = "From: " . $name . " <" . $email . ">\r\n";
$mail_headers .= "Reply-To: " . $email . "\r\n";
$mail_headers .= "X-Mailer: PHP/" . phpversion() . "\r\n";
$mail_headers .= "MIME-Version: 1.0\r\n";
$mail_headers .= "Content-type: text/html; charset=iso-8859-1";
//invio la mail
$send_mail = mail($to,$email_subject,$email_body,$mail_headers);
echo "<div class='uk-alert-success' id='alert-success' uk-alert>
<a class='uk-alert-close' uk-close></a>
<p>Messaggio inviato!</p>
</div>";
}
?>