未收到来自联系人表单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);
    } 
}
?>

尝试安装并运行PHPMailer,它是一个更全面的电子邮件发送系统(免费),如果无法发送电子邮件,还会提供更丰富的错误响应。

邮件功能是出了名的蹩脚。您需要准确地更正邮件头,即使这样,它仍然可能无法作为电子邮件客户端(如gmail和hotmail)发送,而大多数其他客户端使用SFP和FROM地址验证,因此您的发件人地址需要与发送邮件的服务器的域相同。

要检查系统是否工作:禁用接收电子邮件和接收服务器上的所有垃圾邮件过滤和捕获系统。检查发件人域与发送域相同,检查垃圾邮件文件夹,检查服务器捕获所有电子邮件地址文件夹中的垃圾邮件(通常类似于mail@server.co.uk)。

但最重要的是,使用更好的集成邮件程序,如PHPMailer或SwiftMail。

检查服务器的邮件日志,看看邮件是否真的离开了服务器。(需要注意的是,在做任何其他操作之前,请先检查垃圾邮件框。)如果mail()返回TRUE,则仅表示邮件已被接受。并不是说它真的交付了。