没有收到来自联系表的电子邮件 php
not receiving emails from contact form php
我的网站上有联系表格。但是,每当我点击提交时,我的电子邮件地址都没有收到任何信息,尽管它确实显示已提交。
我知道很多 HTML
但对 PHP
知之甚少,所以欢迎任何帮助。
代码如下:
<form id="contact-form" role="form" action="" method="POST">
<div class="ajax-hidden">
<div class="form-group wow fadeInUp">
<label class="sr-only" for="c_name">Name</label>
<input type="text" id="c_name" class="form-control" name="c_name" placeholder="Name">
</div>
<div class="form-group wow fadeInUp" data-wow-delay=".1s">
<label class="sr-only" for="c_email">Email</label>
<input type="email" id="c_email" class="form-control" name="c_email" placeholder="E-mail">
</div>
<div class="form-group wow fadeInUp" data-wow-delay=".2s">
<textarea class="form-control" id="c_message" name="c_message" rows="7" placeholder="Message"></textarea>
</div>
<button type="submit" class="btn btn-lg btn-block wow fadeInUp" data-wow-delay=".3s">Send Message</button>
</div>
<div class="ajax-response"></div>
</form>
<script>
$('button').click(function () {
var c_name = $("#c_name").val();
var c_email = $("#c_email").val();
var c_message = $("#c_message").val();
$.ajax({ //create an ajax request to load_page.php
type: "POST",
url: "assets/php/contactForm.php",
data: {
"c_name": c_name,
"c_email": c_email,
"c_message": c_message
},
success: function (data) {
if (data) {
alert(data);
} else {
alert('Successfully not posted.');
}
}
});
});
</script>
Contactform.php
<?php
// Contact
$to = 'krischlebus@gmail.com';
$subject = 'Portfolio ContactForm';
if(isset($_POST['c_name']) && isset($_POST['c_email']) && isset($_POST['c_message'])) {
$name = $_POST['c_name'];
$from = $_POST['c_email'];
$message = $_POST['c_message'];
if (mail($to, $subject, $from, $name, $message)) {
$result = array(
'message' => 'Sent, thanks!',
'sendstatus' => 1
);
echo json_encode($result);
} else {
$result = array(
'message' => 'Ooops, problem..',
'sendstatus' => 1
);
echo json_encode($result);
}
}
?>
检查您服务器的邮件日志,看看邮件是否确实从您的服务器发出。 (要注意的是,在做更多事情之前,请检查您的垃圾邮件箱。)如果 mail()
returns TRUE 它仅表示邮件已被接受以进行传递。并不是真的送达了。
尝试安装和 运行 PHPMailer,它是一个更全面的电子邮件系统(免费),如果它无法发送电子邮件,也会提供更多信息错误响应。
邮件功能是出了名的蹩脚。您需要 headers EXACTLY 正确,即使这样它仍然无法作为 gmail 和 hotmail 等电子邮件客户端发送,并且大多数其他人使用 SFP 和发件人地址验证,因此您的发件人地址需要与您发送邮件的服务器的域相同。
检查系统是否正常工作:禁用接收电子邮件和接收服务器上的所有垃圾邮件过滤和捕获系统。检查发件人域是否与发送域相同,检查您的垃圾邮件文件夹,检查您的服务器 catch-all 电子邮件地址文件夹中是否有 dud/junk 封电子邮件(通常类似于 mail@server.co.uk )。
但最重要的是,使用更好的集成邮件程序,例如 PHPMailer 或 SwiftMail。
我的网站上有联系表格。但是,每当我点击提交时,我的电子邮件地址都没有收到任何信息,尽管它确实显示已提交。
我知道很多 HTML
但对 PHP
知之甚少,所以欢迎任何帮助。
代码如下:
<form id="contact-form" role="form" action="" method="POST">
<div class="ajax-hidden">
<div class="form-group wow fadeInUp">
<label class="sr-only" for="c_name">Name</label>
<input type="text" id="c_name" class="form-control" name="c_name" placeholder="Name">
</div>
<div class="form-group wow fadeInUp" data-wow-delay=".1s">
<label class="sr-only" for="c_email">Email</label>
<input type="email" id="c_email" class="form-control" name="c_email" placeholder="E-mail">
</div>
<div class="form-group wow fadeInUp" data-wow-delay=".2s">
<textarea class="form-control" id="c_message" name="c_message" rows="7" placeholder="Message"></textarea>
</div>
<button type="submit" class="btn btn-lg btn-block wow fadeInUp" data-wow-delay=".3s">Send Message</button>
</div>
<div class="ajax-response"></div>
</form>
<script>
$('button').click(function () {
var c_name = $("#c_name").val();
var c_email = $("#c_email").val();
var c_message = $("#c_message").val();
$.ajax({ //create an ajax request to load_page.php
type: "POST",
url: "assets/php/contactForm.php",
data: {
"c_name": c_name,
"c_email": c_email,
"c_message": c_message
},
success: function (data) {
if (data) {
alert(data);
} else {
alert('Successfully not posted.');
}
}
});
});
</script>
Contactform.php
<?php
// Contact
$to = 'krischlebus@gmail.com';
$subject = 'Portfolio ContactForm';
if(isset($_POST['c_name']) && isset($_POST['c_email']) && isset($_POST['c_message'])) {
$name = $_POST['c_name'];
$from = $_POST['c_email'];
$message = $_POST['c_message'];
if (mail($to, $subject, $from, $name, $message)) {
$result = array(
'message' => 'Sent, thanks!',
'sendstatus' => 1
);
echo json_encode($result);
} else {
$result = array(
'message' => 'Ooops, problem..',
'sendstatus' => 1
);
echo json_encode($result);
}
}
?>
检查您服务器的邮件日志,看看邮件是否确实从您的服务器发出。 (要注意的是,在做更多事情之前,请检查您的垃圾邮件箱。)如果 mail()
returns TRUE 它仅表示邮件已被接受以进行传递。并不是真的送达了。
尝试安装和 运行 PHPMailer,它是一个更全面的电子邮件系统(免费),如果它无法发送电子邮件,也会提供更多信息错误响应。
邮件功能是出了名的蹩脚。您需要 headers EXACTLY 正确,即使这样它仍然无法作为 gmail 和 hotmail 等电子邮件客户端发送,并且大多数其他人使用 SFP 和发件人地址验证,因此您的发件人地址需要与您发送邮件的服务器的域相同。
检查系统是否正常工作:禁用接收电子邮件和接收服务器上的所有垃圾邮件过滤和捕获系统。检查发件人域是否与发送域相同,检查您的垃圾邮件文件夹,检查您的服务器 catch-all 电子邮件地址文件夹中是否有 dud/junk 封电子邮件(通常类似于 mail@server.co.uk )。
但最重要的是,使用更好的集成邮件程序,例如 PHPMailer 或 SwiftMail。