【发布时间】:2017-05-19 10:32:07
【问题描述】:
我有一个使用 POST 函数和 PHP mailto() 函数的简单电子邮件表单。我的表单中有 PHP 行作为字段的值。发送时间太长了。任何帮助表示赞赏。
PHP:
<?php
if ($_POST['submit']) {
if (!$_POST['name']) {
$error="<br/>-Please enter your name";
}
if (!$_POST['email']) {
$error.="<br/>-Please enter your email";
}
if (!$_POST['message']) {
$error.="<br/>-Please enter a message";
}
if (!$_POST['check']) {
$error.="<br/>-Please confirm you're real";
}
if ($error){
$result="Ohh no, somethings not right... $error";
}
else {
mail("email@email.com","website contact form","Name: ".$_POST['name']."
Email: ".$_POST['email']."
Message: ".$_POST['message']);
{
$result="Thank you, I will reply shortly.";
}
}
}
?>
HTML:
<form action="#contactme" method="post" role="form">
<div class="form-group">
<input type="text" name="name" placeholder="Enter your name" class="form-control form-control-lg" value="<? echo $_POST['name']; ?>" >
</div>
<div class="form-group">
<input type="email" name="email" placeholder="Enter your email" class="form-control form-control-lg" value="<? echo $_POST['email']; ?>">
</div>
<div class="form-group">
<textarea name="message" rows="5" class="form-control" placeholder="Your message..."><? echo $_POST['message']; ?> </textarea>
</div>
<div class="checkbox">
<label>
<input type="checkbox" name="check"><span class="real"> I am real</span>
</label>
</div>
<div align="center">
<input type="submit" name="submit" class="btn btn-secondary btn-lg" value="Send">
</div>
</form>
【问题讨论】:
-
请记住 PHP
mail()函数所做的就是将您的邮件传递到邮件服务器。它是执行所有实际发送电子邮件的邮件服务器。该过程将涉及病毒检查等,可能不会只发送您的电子邮件。 -
然后,当邮件从您的邮件服务器发送时,接收邮件服务器必须重新进行病毒检查等,然后您才能看到它。此外,如果您使用的邮件客户端只会每 X 分钟检查一次电子邮件,这也会增加处理时间
-
您需要使用
filter_input()。机器人也可以填写复选框。 -
此外,您还需要从输入中删除任何密件抄送或抄送。这样一来,您的脚本就不会被用于使用机器人群发邮件。
-
PHP 的 mailto() 函数实际上很慢。加速它的一种方法是在调用 mailto() 之前输出“谢谢”页面,这样用户就不会注意到它。另一种是存储消息并运行 cron 作业以发送电子邮件。