PHP电子邮件脚本。可能不发送电子邮件?

时间:2012-09-18 10:58:29

标签: php forms email validation

我的网站上有一个PHP电子邮件脚本,潜在客户可以与我联系。从Stack得到它并稍微调整一下(有一个蜜罐)。

PHP代码

<?php 

$robotest = $_POST['robotest']; //just testin' for robots

$recipient = "info@agoodman.com.au"; //recipient 
$email = ($_POST['email']); //senders e-mail adress 

if((filter_var($email, FILTER_VALIDATE_EMAIL)) && ($robotest == "")) { 

$Name = ($_POST['name']); //senders name 
$mail_body = ($_POST['comments']); //mail body 
$subject = "Image Consulting Inquiry"; //subject 

$header = "From: ". $Name . " <" . $email . ">\r\n"; //optional headerfields 

mail($recipient, $subject, $mail_body, $header); //mail command :) 

} else {
    print "You've entered an invalid email address!";
}
?>

FORM HTML CODE:

<form name="contactform" id="contactform" method="post" action="/contact/" _lpchecked="1">
    <ul class="form-block">

      <!-- HONEYPOT -->
      <li class="on-no-robots" style="height:0px; text-indent:-9999px; font-size:0px; overflow:hidden;">
        <label>Humans Don't Submit This!! If you can see this, you don't have CSS, and you scare me. This is just here to filter out automated comments!</label>
        <input name="robotest" id="robotest" type="text" />
      </li>
      <!-- HONEYPOT -->

      <li class="third">
        <label for="name">Name</label>
        <input type="text" name="name" id="name" value="" class="required" />
      </li>
      <li class="third">
        <label for="email">Email Address</label>
        <input type="email" name="email" id="email" value="" class="required email" />
      </li>
      <li class="third">
        <label for="phone">Phone Number</label>
        <input type="text" name="phone" id="phone" value="" />
      </li>
    </ul>
    <h3>How can we help you?</h3>
    <ul class="form-block">
      <li class="full">
        <textarea name="comments" id="comments" class="required"></textarea>
      </li>
      <li>
        <input id="submitButton" type="submit" value="Talk to us" onclick="_gaq.push(['_trackEvent', 'Conversions', 'Contact', 'Contact Form']);" />
      </li>
    </ul>
</form>

我也一直在使用Google Analytics&#39;事件跟踪&#34;提交&#34;表格按钮如下:

<input id="submitButton" type="submit" value="Talk to us" onclick="_gaq.push(['_trackEvent', 'Conversions', 'Contact', 'Contact Form']);" />

我可以测试一封电子邮件,但它运行正常。但是,看看我的分析,有几天人们点击了&#34;发送&#34;按钮(触发分析事件)但我没有收到电子邮件。这可能是因为他们没有正确填写表格,但我不确定。我的Gmail垃圾邮件过滤器中没有任何内容。

有没有办法(a)与我的主人核实是否有任何被困的&#39;没有正确发送的电子邮件,以及(b)调整代码,以便这些误报(如果它们是误报)不会发生?

显然,最简单的原因是人们只需点击&#34;提交&#34;无需输入任何内容即可获得乐趣的按钮,从而触发分析事件。每次转化价值约1500美元,所以我希望尽可能确定他们不是真正的转换,而不是通过电子邮件发送给我!

干杯。

2 个答案:

答案 0 :(得分:3)

要查看尚未发送的“被困”电子邮件,您可能需要检查邮件服务器(进入主机)。

至于确保您的邮件功能正常工作,您可以随时创建自己的邮件,例如:

if (!mail($recipient, $subject, $mail_body, $header)) 
{
   /*For when mailing fails*/
   /*Log contents somewhere*/
}

也许当它失败时,会在数据库中存储日志,并将其内容供将来审核?您可以随时查看错误日志以获取更多线索。也许邮件服务器在那个特定时间不稳定/失效

答案 1 :(得分:1)

像这样修改你的脚本。测试一下,看看有什么打印。

$header = "From: ". $Name . " <" . $email . ">\r\n"; //optional headerfields 

$ret = mail($recipient, $subject, $mail_body, $header); //mail command :) 

var_dump($ret);

如果你得到0 / false等,你的服务器上没有启用mail()。如果您看到true / 1等,则很可能您的邮件会发送垃圾邮件。如果您没有在页面上打印任何内容(或者更确切地说“您输入了一个无效的电子邮件地址!”已打印...忽略了对不起),这意味着它只是没有进入此循环

if((filter_var($email, FILTER_VALIDATE_EMAIL)) && ($robotest == "")) { 

告诉我你的看法?