"Contact Me" PHP 中的邮件表格

"Contact Me" Mail Form in PHP

我在我的网站上设置了一个“联系我”表格,但它不起作用。这是代码:

表单标记:

<form class="contactform" method="post" action="php/process-form.php">
    <div class="row">
        <!-- Name Field Starts -->
        <div class="form-group col-xl-6"> <i class="fa fa-user prefix"></i>
            <input id="name" name="name" type="text" class="form-control" placeholder="YOUR NAME" required>
        </div>
        <!-- Name Field Ends -->
        <!-- Email Field Starts -->
        <div class="form-group col-xl-6"> <i class="fa fa-envelope prefix"></i>
            <input id="email" type="email" name="email" class="form-control" placeholder="YOUR EMAIL" required>
        </div>
        <!-- Email Field Ends -->
        <!-- Comment Textarea Starts -->
        <div class="form-group col-xl-12"> <i class="fa fa-comments prefix"></i>
            <textarea id="comment" name="comment" class="form-control" placeholder="YOUR MESSAGE" required></textarea>
        </div>
        <!-- Comment Textarea Ends -->
    </div>
    <!-- Submit Form Button Starts -->
    <div class="submit-form">
        <button class="btn button-animated" type="submit" name="send"><span><i class="fa fa-send"></i> Send Message</span></button>
    </div>
    <!-- Submit Form Button Ends -->
    <div class="form-message"> <span class="output_message text-center font-weight-600 uppercase"></span>
    </div>
</form>

进程-form.php :

<?php
if (isset($_REQUEST['name'],$_REQUEST['email'])) {
    $name = $_REQUEST['name'];
    $mail = $_REQUEST['email'];
    $message = $_REQUEST['comment'];
    $to = 'redacted@for.privacy';
    $subject = 'Contact From My Website';
    $headers = "From: ".$name." <".$mail."> \r\n";
    $send_email = mail($to,$subject,$message,$headers);
    echo ($send_email) ? 'success' : 'error';
}
?>

AJAX :

$(".contactform").on("submit", function() {
    $(".output_message").text("Loading...");

    var form = $(this);
    $.ajax({
        url: form.attr("action"),
        method: form.attr("method"),
        data: form.serialize(),
        success: function(result) {
            if (result == "success") {
                $(".form-inputs").css("display", "none");
                $(".box p").css("display", "none");
                $(".contactform").find(".output_message").addClass("success");
                $(".output_message").text("Message Sent!");
            } else {
                $(".tabs-container").css("height", "440px");

                $(".contactform").find(".output_message").addClass("error");
                $(".output_message").text("Error Sending!");
            }
        }
    });

    return false;
});

来自 ajax 的错误消息显示,我没有收到任何邮件。这段代码应该是正确的,但我读到我需要一个 smtp 配置?我可以在我的 google 企业电子邮件中设置这样的东西,但我不知道如何以及如何在网站上实现它。

当您使用mail()功能时,您应该在php.ini文件中配置STMP。

但是您可以使用 PHPMailer,尤其是在处理 Google 电子邮件服务时,因为 Google 不允许 安全性较低的应用程序 默认.

使用 PHPMailer 查找以下示例:

$mail = new PHPMailer;
$mail->From = 'from@example.com';
$mail->FromName = 'Mailer';

$mail->addAddress($_REQUEST['email'], $_REQUEST['name']);
$mail->addCC('cc@example.com');

$mail->Subject = 'Contact From My Website';
$mail->Body = $_REQUEST['comment'];

echo $mail->send() ? "success" : "error"; 

PHP 的 mail() 函数在某些情况下确实需要在 php.ini 文件中进行一些配置,例如使用 Windows 操作系统。它记录在 php.net mail 文档页面中。如果您的负载不是数百封邮件,要么配置文件,要么使用一些 public 可用的库进行 SMTP 连接。它们提供了更多的灵活性,通常提供简单的 api.

在 windows

您需要设置 php.ini

[mail]
SMTP = "your-mail-server-address"
smtp_port = 25

This 答案应该为您提供足够的解释和信息。

在 Ubuntu / Debian

您必须配置您的 sendmail 客户端,以便它可以在您的网络中发送电子邮件,并在 php.ini 文件

sendmail_path 指令中指定为 sendmail 命令