无法使用邮件功能发送电子邮件

时间:2015-02-01 20:33:10

标签: php

第一个问题,第一次看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      = 'nobody@example.com';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: webmaster@example.com' . "\r\n" .
    'Reply-To: webmaster@example.com' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

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

电子邮件未被发送/接收(我也在检查垃圾邮件)。

文件托管在安装了PHP的Web服务器上。警告框弹出,但为空。最初的AJAX调用是通过网页上的提交按钮进行的​​。

编辑:我发送给我的个人电子邮件,我上面没有包含这个电子邮件。

编辑:即使访问脚本的URL,仍然没有发送电子邮件。

最终编辑:解决方案是我的服务器没有安装PHP邮件 - 它不受支持,因为它被认为是不可靠的,因此他们建议使用SMTP。为了解决这个问题,我使用了DrewT使用SSH来检查“which sendmail”

的解决方案

希望这种情况可以帮助将来的某个人。

谢谢大家。

1 个答案:

答案 0 :(得分: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@example.com';
// 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>';
}

除此之外,您需要使用浏览器检查员中的网络标签进行调试。祝您好运!