没有收到来自联系表的电子邮件 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。