1

我一直在尝试使用 PHP 创建一个简单的联系表单。因此,我设法通过插入所有变量的值来使表单正常工作,并且它可以很好地发送电子邮件:

$to = "andrew@mingbogu.com";
$subject = "Job";
$message = "Test";
$from = "example@example.com";
$headers = "From:" . $from;
mail($to,$subject,$message,$headers);

但是,只要我用 $_REQUEST[var] 替换这些值,电子邮件就会发送到我的垃圾邮件,没有发件人地址:

$to = "andrew@mingbogu.com";
$subject = "Job";
$message = $_REQUEST['clientMessage'];
$from = $_REQUEST['clientEmail'];
    $headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= "From: $from";
mail($to,$subject,$message,$headers);

邮件截图: 在此处输入图像描述

我正在使用 jQuery 通过 ajax 表单获取值:

    var clientName = $("#name").val();
    window.alert(clientName);
    var clientEmail = $("#email").val();    
    window.alert(clientEmail);
    var clientMessage = $("#message").val();            
    window.alert(clientMessage);
     var data = "from=" + clientEmail + "&subject=" + clientName + "&message=" + clientMessage;
     $.ajax({
            type: "POST",
            url: "email.php",
            data: data,
            success: function() {
                $("#loading").fadeOut(100).hide();
                $("#name").val(' ');
                $("#email").val(' ');
                $("#message").val(' ');
                $("#message-sent").fadeIn(100).show();
            }
        });

在将它们发送到 ajax 表单之前,我已经打印了clientName,clientMessage和 ,clientEmail并且它们都以正确的值打印出来。知道我做错了什么吗?

HTML 表单:

 <form id="contactMe" data-abide>
 <input type="text" id="name">
  <input type="text" id="email">        
  <textarea  id="message"></textarea>
 <button type="submit" id="sendEmail" class="button">Submit</button>
4

2 回答 2

4

您使用错误的变量来阅读客户电子邮件。在您的 JS 中,您将其拉入一个名为 的变量clientEmail中,但随后您from在传递 AJAX 请求时为其命名:

var data = "from=" + clientEmail + "&subject=" + clientName + "&message=" + clientMessage;

因此,在 PHP 中,您应该以.$_REQUEST['from']而不是$_REQUEST['clientEmail'].

于 2013-08-04T06:34:16.017 回答
1

这只是对已接受答案的“补充”(很好的尼克),因为电子邮件被视为垃圾邮件。

添加适当的标题,例如:

$headers  = "From: $from";
$headers .= 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 

将有助于减少电子邮件最终成为垃圾邮件或被视为垃圾邮件的机会。

如果不包含正确的标题,某些网站会将其标记为垃圾邮件。

更多信息mail()可以在PHP.net上找到

于 2013-08-04T06:45:35.557 回答