0

私のウェブサイトには、潜在的なクライアントが私に連絡するために使用する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!";
}
?>

フォームHTMLコード:

<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>

また、次のように、フォームの[送信]ボタンでGoogleAnalyticsのイベントトラッキングを使用しています。

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

メールをテストできますが、問題なく動作します。しかし、私の分析を見ると、人々が「送信」ボタンをクリックした(分析イベントをトリガーした)数日がありますが、私は電子メールを受信して​​いません。フォームに正しく記入されていないことが原因かもしれませんが、よくわかりません。Gmailのスパムフィルターには何もありません。

(a)正しく送信されていない「トラップされた」電子メールがあるかどうかをホストに確認し、(b)これらの誤検知(誤検知の場合)が発生しないようにコードを微調整する方法はありますか?発生しますか?

明らかに、最も単純な原因は、何も入力せずに「送信」ボタンをクリックするだけで、分析イベントがトリガーされることです。これらのコンバージョンはそれぞれ約1500ドルの価値があるので、メールで送信されない本物のコンバージョンではないことを可能な限り確認したいと思います。

みんな乾杯。

4

2 に答える 2

3

配信されていない「トラップされた」電子メールを表示するには、おそらくメールサーバーをチェックする必要があります(ホストにアクセスします)。

メール機能が正しく機能していることを確認することに関しては、次のように、失敗したときにいつでも独自のキャッチを作成できます。

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

おそらく失敗したときに、将来のレビューのためにその内容を含むログをデータベースに保存しますか?エラーログで他の手がかりをいつでも確認できます。おそらく、その特定の時間にメールサーバーが不安定/ダウンしている

于 2012-09-18T11:16:22.220 に答える
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 == "")) { 

何が見えるか教えてください。

于 2012-09-18T11:16:47.660 に答える