2012-02-08 3 views
0

Я не лучший на PHP, и я борюсь с тем, что, по моему мнению, должен быть довольно простым сценарием для отправки контактной формы в электронном письме.PHP отправить вопрос по электронной почте из ajax/jquery

Мой JQuery запуска сценария выглядит следующим образом -

data_html = "name="+ names + "&phone_number=" + phone + "&email_address="+ email_address + "&arrival_date=" + arrival + "&nights=" + nights + "&adults=" + adults+ "&children=" + children + "&rooms=" + rooms + "&notes=" + notes; 


if (error == false){ 
$('.error').fadeOut(500); 

$.ajax({ 
    type: 'POST', 
    url: 'sendMail.php', 
    data: data_html, 
    success: function(msg){ 

    if (msg == 'sent'){ 
     alert("sent") 
    $('#contact-form').fadeOut(); 
    $('#success').fadeIn(); 
    $('#success').html('Your request has been sent, we will respond to you shortly - any issues please call us on 01539 724468') ; 
    $('#name').val(''); $('#phone').val(''); $('#emailAd').val(''); $('#arrival').val(''); $('#notes').val(''); 
    }else{ 
     alert("not sent") 
     $('#contact-form').fadeOut(); 
     $('#success').fadeIn(); 
    $('#success').html('Mail Error. Please Try Again.!') ; 
    setTimeout("$('#success').fadeOut(); $('#contact-form').fadeOut();)",5000) 
    ; 
    } 
    } 

});

Мой PHP скрипт состоит из следующих -

<?php 

$name = $_POST['name']; 
$phone = $_POST['phone_number']; 
$email = $_POST['email_address']; 
$arrival = $_POST['arrival_date']; 
$nights = $_POST['nights']; 
$adults = $_POST['adults']; 
$children = $_POST['children']; 
$rooms = $_POST['rooms']; 
$notes = $_POST['notes']; 
$to ='[email protected]'; 

$message = ""; 
$message .= "Booking Request from Sundial Website<br>\n<br>\n"; 
$message .= "*Name: " . htmlspecialchars($name, ENT_QUOTES) . "<br>\n"; 
$message .= "*Email: " . htmlspecialchars($email, ENT_QUOTES) . "<br>\n"; 
$message .= "*Phone Number: " . htmlspecialchars($phone, ENT_QUOTES) . "<br>\n"; 
$message .= "Arrival Date: " . htmlspecialchars($arrival, ENT_QUOTES) . "<br>\n"; 
$message .= "No of Nights: " . htmlspecialchars($nights, ENT_QUOTES) . "<br>\n"; 
$message .= "Adults: " . htmlspecialchars($adults, ENT_QUOTES) . "<br>\n"; 
$message .= "Children: " . htmlspecialchars($children, ENT_QUOTES) . "<br>\n"; 
$message .= "Rooms: " . htmlspecialchars($rooms, ENT_QUOTES) . "<br>\n"; 
$message .= "Notes: " . htmlspecialchars($notes, ENT_QUOTES) . "<br>\n"; 

$headers = "MIME-Version: 1.0\r\nContent-type: text/html; charset=iso-8859-1\r\n"; 
$headers .= "From: \"" . $name . "\" <" . $email . ">\r\n"; 
$headers .= "Reply-To: " . $email . "\r\n"; 
$message = utf8_decode($message); mail($to, "Booking Request from Sundial Website",  $message, $headers); 

if ($message){ 
echo 'sent'; 
}else{ 
    echo 'failed'; 
} 
?> 

Может кто-нибудь помочь или предложить альтернативный метод? Файлы находятся здесь, если вы хотите увидеть их в прямом эфире (http://www.offthecuffdesign.co.uk/chilli/) и (http://www.offthecuffdesign.co.uk/chilli/sendMail.php)

+0

Если вы хотите проверить успех и неудачу команды mail, вам нужно получить возвращаемое значение ... '$ message = mail (...);' –

+0

Пробовал ли вы печатать опубликованные значения после использования print_r ($ _ POST), что вы там видите. Оповещение (msg) в javascript для печати ответа. Расскажите, что вы наблюдаете. – Kiran

+0

Каков ответ запроса ajax? –

ответ

1

последняя часть в вашем PHP-скрипт не имеет смысла ...

$message = utf8_decode($message); mail($to, "Booking Request from Sundial Website",  $message, $headers); 
if ($message) { 
    echo 'sent'; 
} else { 
    echo 'failed'; 
} 

Это должно быть что-то вроде этого:

$message = utf8_decode($message); 
$result = mail($to, "Booking Request from Sundial Website",  $message, $headers); 
if ($result) { 
    echo 'sent'; 
} else { 
    echo 'failed'; 
} 

Если это не ваша проблема, просьба уточнить ожидаемый результат и что на самом деле происходит.

Смежные вопросы