"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 命令
我在我的网站上设置了一个“联系我”表格,但它不起作用。这是代码:
表单标记:
<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 命令