Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHPMailer从我的表单接收垃圾邮件_Php_Phpmailer - Fatal编程技术网

使用PHPMailer从我的表单接收垃圾邮件

使用PHPMailer从我的表单接收垃圾邮件,php,phpmailer,Php,Phpmailer,我来stackoverflow就是为了这个,因为我搜索的所有内容都在谈论使用PHPMailer从表单发送到用户垃圾邮件箱的电子邮件。但是,我需要有关从表单本身接收垃圾邮件的信息。我在一个小的、流量很小的房地产代理网站上使用它。她不时收到垃圾邮件,我不知道如何解决。PHPMailer似乎是用PHP发送电子邮件的常用工具,因此我认为垃圾邮件/安全性已经得到了很好的保护。我一定是做错了什么。。。。当然,我正在使用class.phpmailer.php,下面是我的代码: if ($_SERVER["RE

我来stackoverflow就是为了这个,因为我搜索的所有内容都在谈论使用PHPMailer从表单发送到用户垃圾邮件箱的电子邮件。但是,我需要有关从表单本身接收垃圾邮件的信息。我在一个小的、流量很小的房地产代理网站上使用它。她不时收到垃圾邮件,我不知道如何解决。PHPMailer似乎是用PHP发送电子邮件的常用工具,因此我认为垃圾邮件/安全性已经得到了很好的保护。我一定是做错了什么。。。。当然,我正在使用class.phpmailer.php,下面是我的代码:

if ($_SERVER["REQUEST_METHOD"] == "POST") {
  $name = trim($_POST["name"]);
  $email = trim($_POST["email"]);
  $phone = trim($_POST["phone"]);
  $message = trim($_POST["message"]);


if ($name == "" OR $email == "" OR $phone == "" OR $message == "") {
    echo "You must specify a value for name, email address, phone, and message.";
    exit;
}

foreach( $_POST as $value ){
    if( stripos($value,'Content-Type:') !== FALSE ){
        echo "There was a problem with the information you entered.";    
        exit;
    }
}

if ($_POST["address"] != "") {
    echo "Your form submission has an error.";
    exit;
}

require_once("phpmailer/class.phpmailer.php");
$mail = new PHPMailer();

if (!$mail->ValidateAddress($email)){
    echo "You must specify a valid email address.";
    exit;
}

$email_body = "";
$email_body = $email_body . "Name: " . $name . "<br>";
$email_body = $email_body . "Email: " . $email . "<br>";
$email_body = $email_body . "Phone: " . $phone . "<br>";
$email_body = $email_body . "Message: " . $message;

$mail->SetFrom($email, $name);
$address = "email@domain.com";
$mail->AddAddress($address, "A Name Here");
$mail->Subject    = "Message from " . $name  . " on website contact form";
$mail->MsgHTML($email_body);

if(!$mail->Send()) {
  echo "There was a problem sending the email: " . $mail->ErrorInfo;
  exit;
}

header("Location: index.php?status=thanks");
exit;
}
HTML非常简单:

<form id="form" name="form" method="post" action="contact-process.php">

    <?php if (isset($_GET["status"]) AND $_GET["status"] == "thanks") { ?>
      <p class="form-thanks">Thank you for contacting us. We'll be in touch with you very soon.</p>
    <?php } ?>

    <label>Name
    <span class="small">First and Last</span>
    </label>
    <input type="text" name="name" id="name" />

    <label>E-Mail
    <span class="small">name@email.com</span>
    </label>
    <input type="text" name="email" id="email" />

    <label>Phone Number
    <span class="small">With area code</span>
    </label>
    <input type="text" name="phone" id="phone" />

    <label>Message
    <span class="small">How can we help you?</span>
    </label>
    <textarea cols="40" rows="8" name="message"></textarea>

    <button type="submit">Submit</button>
    <div class="spacer"></div>

</form>

一种避免垃圾邮件的简单技术是使用一种叫做蜜罐的东西,这是一个普通用户看不到的文本字段,但是一个愚蠢的垃圾邮件机器人可能会在该字段中输入一些内容

if ($_SERVER["REQUEST_METHOD"] == "POST") {

  // robot detection
  $honeypot = trim($_POST["email"]);     

  if(!empty($honeypot)) {
    echo "BAD ROBOT!"; 
    exit;
  }

  $name = trim($_POST["name"]);
  $email = trim($_POST["real_email"]);
  $phone = trim($_POST["phone"]);
  $message = trim($_POST["message"]);

  // rest stays as is
在HTML文件中,您需要插入另一个隐藏的文本字段,即蜜罐:

<label>E-Mail
<span class="small">name@email.com</span>
</label>
<input type="text" name="email" style="display: none;">
<input type="text" name="email_real" id="email" />
请注意,我是如何将实际可见的电子邮件文本字段的名称更改为email_real的。在真正的电子邮件领域完全避免使用email这个词会更好,因为许多机器人都是哑巴

不可见的蜜罐输入字段应该称为email。为什么?因为大多数机器人都在扫描一些标准的输入字段,如电子邮件、地址等,所以给蜜罐一个通用的表单字段名很重要

另一个巧妙的技巧是交换一些常用字段名,即交换电子邮件和邮政编码字段的名称,这样机器人将为电子邮件地址填写一个数值,为邮政编码填写一个电子邮件地址,这将导致验证失败


这并不能保证100%杀死所有垃圾邮件,但它在不强迫用户解决恼人的验证码的情况下对我来说效果很好…

避免垃圾邮件的一个简单方法是使用一个叫做蜜罐的东西,这是一个普通用户看不到的文本字段,但是一个愚蠢的垃圾邮件机器人可能会在该字段中输入一些内容

if ($_SERVER["REQUEST_METHOD"] == "POST") {

  // robot detection
  $honeypot = trim($_POST["email"]);     

  if(!empty($honeypot)) {
    echo "BAD ROBOT!"; 
    exit;
  }

  $name = trim($_POST["name"]);
  $email = trim($_POST["real_email"]);
  $phone = trim($_POST["phone"]);
  $message = trim($_POST["message"]);

  // rest stays as is
在HTML文件中,您需要插入另一个隐藏的文本字段,即蜜罐:

<label>E-Mail
<span class="small">name@email.com</span>
</label>
<input type="text" name="email" style="display: none;">
<input type="text" name="email_real" id="email" />
请注意,我是如何将实际可见的电子邮件文本字段的名称更改为email_real的。在真正的电子邮件领域完全避免使用email这个词会更好,因为许多机器人都是哑巴

不可见的蜜罐输入字段应该称为email。为什么?因为大多数机器人都在扫描一些标准的输入字段,如电子邮件、地址等,所以给蜜罐一个通用的表单字段名很重要

另一个巧妙的技巧是交换一些常用字段名,即交换电子邮件和邮政编码字段的名称,这样机器人将为电子邮件地址填写一个数值,为邮政编码填写一个电子邮件地址,这将导致验证失败


这并不是100%保证杀死所有垃圾邮件,但它在不强迫用户解决恼人的验证码的情况下对我很有效…

你是说有人从你的表单向你发送垃圾邮件,这是问题吗?然后添加验证码或其他什么。PHPMailer本身不会过滤任何东西。@mario一定比CAPTCHA更好。有时候看看@Phil,这是我们都认为很复杂的最简单的事情。PHPMailer似乎是用PHP发送电子邮件的常用工具,所以我认为垃圾邮件/安全性已经被很好地覆盖了不,它无法阻止人们使用你的表单发送垃圾邮件,这就是你的工作。你是说有人从你的表格中向你发送垃圾邮件,这是问题吗?然后添加验证码或其他东西。PHPMailer本身不会过滤任何东西。@mario一定比CAPTCHA更好。有时候看看@Phil,这是我们都认为很复杂的最简单的事情。PHPMailer似乎是用PHP发送电子邮件的常用工具,所以我认为垃圾邮件/安全性已经得到了很好的保护。不,它不能阻止人们使用你的表单发送垃圾邮件,这将是你的工作——一个老宠儿!我不会注意到邮件没有被发送的事实,只是愚蠢地失败了——很好的建议!我已经实现了,我们将看看它是如何实现的。还有@Phil,说得好。只是更新了一下@sled,它似乎成功了:谢谢!非常有用,尽管我在这里参加聚会有点晚了,但我想说的是,我在过去使用过这个,对于我们将收到的少量垃圾邮件,这将解决业务问题。谢谢你的老宠儿!我不会注意到邮件没有被发送的事实,只是愚蠢地失败了——很好的建议!我已经实现了,我们将看看它是如何实现的。还有@Phil,说得好。只是更新了一下@sled,它似乎成功了:谢谢!非常有用,尽管我在这里参加聚会有点晚了,但我想说的是,我在过去使用过这个,对于我们将收到的少量垃圾邮件,这将解决业务问题。谢谢@sled