我一直在尝试使用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>
答案 0 :(得分:4)
您正在使用错误的变量来阅读客户端电子邮件。在您的JS中,您将其拉入名为clientEmail
的变量中,但在传递AJAX请求时,您将为其指定名称from
:
var data = "from=" + clientEmail + "&subject=" + clientName + "&message=" + clientMessage;
因此,在PHP中,您应该以{{1}}访问它,而不是$_REQUEST['from']
。
答案 1 :(得分:1)
这只是对accepted answer(好抓Nick)的“补充”,因为电子邮件被视为垃圾/垃圾邮件。
添加适当的标题,例如:
$headers = "From: $from";
$headers .= 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
将有助于减少电子邮件在垃圾邮件中结束或被视为垃圾邮件的可能性。
如果未包含正确的标头,某些网站会将其标记为垃圾邮件。
有关mail()
的更多信息,请访问PHP.net