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

Php 无法使用邮件功能发送电子邮件,php,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 = $(

第一个问题,也是第一次看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调用是通过网页上的submit按钮进行的

编辑:我将此发送到我的个人电子邮件,我没有在上面包括

编辑:即使访问脚本的URL,电子邮件仍不会发送

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

希望这个场景对将来的人有所帮助


谢谢大家。

发生的事情似乎是您没有以正确的格式发送信息,因为您没有在服务器上解析var数据字符串。我想尝试一下:

var name = $("input#name").val();
var email = $("input#email").val();
var subject = $("input#subject").val();
var message = $("input#message").val();
然后在您的post功能中:

$.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>';
}
//输入您的发送电子邮件地址
$to$email@example.com';
//添加标题
$header=“from:$name”;
//只有在我们有所有需要的数据时才发送
如果($subject!==“||”&&&$message!==“||”&&&&$name!==“||”&&&&$mail_from!==“||”){
$send_contact=mail($to,$subject,$message,$header);
//检查消息是否已发送
//并提供一些格式(html)以在我们的响应中发送
如果($send_contact){
回声'
您的邮件已成功发送耶!
';
}
否则{
回声'
发送失败:0
';
}
}
否则{
回声'
您有空的POST变量:0
';
}

除此之外,您还需要使用浏览器检查器中的“网络”选项卡进行调试。/祝您好运

帮你什么忙?问题/问题是什么?但警报不会弹出,是吗?是的,警报会弹出。@j08691从我的表单在网站上发送电子邮件。那么问题是什么?另外,控制台将调用记录为成功是什么意思?您从未调用过
console.log
,所以记录了什么以及记录在哪里?感谢@DrewT给出了非常棒的答案,但即使手动点击文件的URL,我的电子邮件也不会发送。在此期间我将尝试一下。如果是这种情况,您需要确保在您的服务器上启用PHP
mail()
函数。您可以通过多种方式执行此操作,但我要做的第一件事是检查您的服务器php和apache错误日志,并获取错误代码,以了解它尝试使用
mail()
时发生的情况。我的代码直接来自我的一台服务器,因此我确信它正在工作。此外,您还需要验证
sendmail
模块是否已安装。您可以使用
哪个sendmail
通过
SSH
对服务器执行此操作,如果安装了,服务器将返回如下内容:
/usr/bin/sendmail
谢谢,Drew将查看这两种方法,但下载错误日志需要一些时间。。。