Php 无法使用邮件功能发送电子邮件
第一个问题,也是第一次看PHP,所以请耐心听我说 我目前有以下jQuery,它正在调用一个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 = $(
$(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,我的电子邮件也不会发送。在此期间我将尝试一下。如果是这种情况,您需要确保在您的服务器上启用PHPmail()
函数。您可以通过多种方式执行此操作,但我要做的第一件事是检查您的服务器php和apache错误日志,并获取错误代码,以了解它尝试使用mail()
时发生的情况。我的代码直接来自我的一台服务器,因此我确信它正在工作。此外,您还需要验证sendmail
模块是否已安装。您可以使用哪个sendmail
通过SSH
对服务器执行此操作,如果安装了,服务器将返回如下内容:/usr/bin/sendmail
谢谢,Drew将查看这两种方法,但下载错误日志需要一些时间。。。