"Contact Me" 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>

process-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."> rn";
$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配置?我可以在我的谷歌商务电子邮件中设置这样的东西,但我不知道如何以及如何在网站上实现它。

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

windows上的

您需要设置php.ini

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

这个答案应该为你提供足够的解释和信息。

Ubuntu/Debian

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

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

但是你可以使用PHPMailer特别是当处理谷歌的电子邮件服务,因为谷歌不允许不安全的应用默认为

查看下面使用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"; 

最新更新