2015-02-01 5 views
1

Первый вопрос и первый раз, глядя на PHP, пожалуйста, несите меня.Не удается отправить письмо по электронной почте

я в настоящее время ниже JQuery, который звонит файл PHP:

$(document).on('click', '#btnContactUs', function() { 

    var name = $("input#name").val(); 
    var email = $("input#email").val(); 
    var subject = $("input#subject").val(); 
    var message = $("input#message").val(); 

    var dataString = 'name='+ name + '&email=' + email + '&subject=' + subject + '&message=' + message; 


    $.ajax({ 
     type: "POST", 
     url: "php/message.php", 
     data: dataString, 
     success: function(response) { alert(response); } 
     }); 

    return false; 
    }); 

Консоль регистрирует вызов, как успешный (XHR завершения загрузки: POST "PHP/message.php").

Ниже приведен полный сценарий в файле:

<?php 
$to  = '[email protected]'; 
$subject = 'the subject'; 
$message = 'hello'; 
$headers = 'From: [email protected]' . "\r\n" . 
    'Reply-To: [email protected]' . "\r\n" . 
    'X-Mailer: PHP/' . phpversion(); 

mail($to, $subject, $message, $headers); 
?> 

Электронная почта не отправляется/получил (я проверяю спам также).

Файлы размещаются на веб-сервере, на котором установлен PHP. Появится окно предупреждения, но пустое. Первоначальный вызов AJAX производится из кнопки отправки на веб-странице.

EDIT: Я посылаю это на свой личный адрес электронной почты, который я не упомянул выше.

EDIT: Даже при посещении URL-адреса сценария письмо по-прежнему не отправляется.

ОКОНЧАТЕЛЬНЫЙ РЕДАКТОР: Разрешение заключается в том, что на моем сервере не было установленной почты PHP - оно не поддерживается, поскольку оно считается ненадежным и поэтому они рекомендуют SMTP. Чтобы понять это, я использовал решение DrewT с использованием SSH для проверки «какой sendmail»

Надеюсь, что этот сценарий поможет кому-то в будущем.

Спасибо всем.

+2

Дайте вам руку с чем? В чем проблема/вопрос? – j08691

+0

Но предупреждение не появляется, не так ли? – baao

+0

Да, предупреждение появляется. – DennisY

ответ

0

Что, кажется, происходит, так это то, что вы не отправляете свою информацию в правильном формате, потому что вы не разбираете данные var dataString на сервере. Я хотел бы попробовать что-то вроде:

var name = $("input#name").val(); 
var email = $("input#email").val(); 
var subject = $("input#subject").val(); 
var message = $("input#message").val(); 

Тогда в вашей почтовой функции:

$.ajax({ 
    type: "POST", 
    url: "php/message.php", 
    data : { name: name, email: email, subject: subject, message: message }, 
    success: function (response, status, err) { 
     // do stuff... 
     // NOTE: don't return false or it won't send 
     // 'return false' only if the form is incomplete 
     // and you don't want the email sent out prematurely 
    } 
}); 

Тогда получить эти переменные в вашем PHP:

$name = $_POST['name']; 
$email = $_POST['email']; 
$subject = $_POST['subject']; 
$message = $_POST['message']; 

Теперь вы можете отправить по электронной почте, как это :

// Enter your send email address 
$to = '[email protected]'; 
// Add your headers 
$header = "from: $name <$email>"; 

// only send it if we have all the data we need 
if($subject !== "" || " " && $message !== "" || " " && $name !== "" || " " && $mail_from !== "" || " ") { 

    $send_contact = mail($to,$subject,$message,$header); 

    // check if message was sent 
    // and provide some formatting (html) to send along in our response 
    if ($send_contact) { 
     echo '<div class="msg-sent"> 
        Your message was sent successfully yay! 
       </div>'; 
    } 
    else { 
     echo '<div class="msg-send-failed"> 
        SEND FAILED :0 
       </div>'; 
    } 
} 
else { 
    echo '<div class="msg-had-empty"> 
        YOU HAD EMPTY POST VARIABLES :0 
      </div>'; 
} 

Beyond tha t вам нужно будет отлаживать, используя вкладку сетей в инспекторе вашего браузера./Удачи!

+0

Спасибо @DrewT за отличный ответ, но моя электронная почта не будет отправляться даже при попадании URL-адреса файла вручную. Я дам этому попробовать в то же время. – DennisY

+0

Если это так, вам нужно убедиться, что функция PHP 'mail()' включена на вашем сервере. Вы можете сделать это несколькими способами, но первое, что я сделал бы, это проверить ваши журналы ошибок php и apache и получить код ошибки для того, что происходит, когда он пытается использовать 'mail()' – DrewT

+0

. Мой код пришел непосредственно из одной из мои серверы, поэтому я точно знаю, что он работает – DrewT

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