php
  • html-email
  • 2016-09-14 18 views -1 likes 
    -1

    私はreCaptchaの検証でフォームを作成し、私のセットアップには電子メールが重複して送信され、Officeからスパムが届きます。PHPメール機能が重複したメールを送信

    私の間違いは何ですか?

    フォームが満たされていることを除いて、すべてがうまくいきます。当時は2件のメールが届きました。

    <?php 
    if (isset($_POST["submit"])) { 
    
        $url = 'https://www.google.com/recaptcha/api/siteverify'; 
        $privatekey = "******"; 
    
        $response = file_get_contents($url."?secret=".$privatekey."&response=".$_POST['g-recaptcha-response']); 
        $data = json_decode($response); 
    
        if(isset($data->success) AND $data->success==true){ 
    
         $to = "[email protected]"; 
         $emailfrom = $_POST['email']; 
         $email = $_POST['email']; 
         $nom = $_POST['nom']; 
         $phone = $_POST['phone']; 
         $subject = "Formulaire de Contact Web "; 
         $commentaire = $_POST['commentaire']; 
    
         $headers = 'MIME-Version: 1.0' . "\r\n"; 
         $headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n"; 
         $headers .= "Reply-to: $emailfrom"; 
    
         $message = " 
         <!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"> 
         <html> 
         <head> 
         <title>Appel de service (rempli sur le site internet)</title> 
         <meta charset=\"UTF-8\"> 
         <style type=\"text/css\"> 
         h1,h2,h3,h4,h5,h6 { 
          font-family: Cambria, \"Hoefler Text\", \"Liberation Serif\", Times, \"Times New Roman\", serif; 
          color: #272727; 
         } 
         </style> 
         </head> 
         <body> 
         <h2 style=\"font-size: 1.25em; font-family: Gotham, ʼHelvetica Neueʼ, Helvetica, Arial, sans-serif;\">Vous avez re&ccedil;u une demande de contact sur votre site internet. </h2> 
         <br> 
         <table width=\"500\" border=\"1\" cellpadding=\"5\" cellspacing=\"2\"> 
          <tbody> 
          <tr> 
           <td colspan=\"2\" align=\"left\" valign=\"middle\" bgcolor=\"#84BDEC\"><h3>Formulaire de contact Copiscan.com</h3></td> 
          </tr> 
          <tr> 
           <td width=\"155\" align=\"left\" valign=\"middle\" bgcolor=\"#D5D5D5\">Nom</td> 
           <td width=\"313\" align=\"left\" valign=\"middle\">$nom</td> 
          </tr> 
          <tr> 
           <td width=\"155\" align=\"left\" valign=\"middle\" bgcolor=\"#D5D5D5\">Téléphone</td> 
           <td width=\"313\" align=\"left\" valign=\"middle\">$phone</td> 
          </tr> 
          <tr> 
           <td align=\"left\" valign=\"middle\" bgcolor=\"#D5D5D5\">Adresse courriel</td> 
           <td align=\"left\" valign=\"middle\">$email</td> 
          </tr> 
          <tr bgcolor=\"#D5D5D5\"> 
           <td colspan=\"2\" align=\"left\" valign=\"middle\">Commentaire :</td> 
          </tr> 
          <tr> 
           <td height=\"75\" colspan=\"2\" align=\"left\" valign=\"top\">$commentaire</td> 
          </tr> 
          </tbody> 
         </table> 
         </body> 
         </html> 
         "; 
    // Always set content-type when sending HTML email 
    mail($to, $subject, $message, $headers); 
    
         // so on...all your mail parameters here 
    
    
         if(mail($to, $subject, $message, $headers)){ 
            header('Location: contactez-nous.php?CaptchaPass'); 
    
         }else{ 
          echo "mail could not be sent"; 
         } 
        }else{ 
           header('Location: contactez-nous.php?CaptchaFail'); 
        } 
    
    }else{ 
        header('Location: contactez-nous.php?CaptchaError'); 
    
    } 
    
    ?> 
    
    +1

    あなたはそれを2回呼びます。コメントの後に一度 '//常に設定...'し、 'if'でもう一度 – hummingBird

    +0

    ありがとう。私はそれを知らなかった。私はJavascriptとPHPの知識が限られています。 –

    答えて

    2

    ダブル関数呼び出しmail

    // Always set content-type when sending HTML email 
    mail($to, $subject, $message, $headers); 
    
         // so on...all your mail parameters here 
         if(mail($to, $subject, $message, $headers)){ 
    

    は、このいずれかを試してみてください。

    // Always set content-type when sending HTML email 
    $mailOk = mail($to, $subject, $message, $headers); 
    
         // so on...all your mail parameters here 
         if($mailOk){ 
    

    あるいは他の方法で回避:

    // Always set content-type when sending HTML email 
    // Remove this line --> mail($to, $subject, $message, $headers); 
    
         // so on...all your mail parameters here 
         if(mail($to, $subject, $message, $headers))){ 
    
    +0

    ありがとうございました。解決されました。 –

    1

    文は、メールが正常に送信されたかどうかを評価するだけでなく、メールを送信しない場合にのみ、あなたは内部

    // Always set content-type when sending HTML email 
    mail($to, $subject, $message, $headers); 
        // so on...all your mail parameters here 
    
    
        if(mail($to, $subject, $message, $headers)){ 
           header('Location: contactez-nous.php?CaptchaPass'); 
    
        }else{ 
         echo "mail could not be sent"; 
        } 
    

    秒メール(...)を持っています。したがって、最初のメール(...)を削除し、if文の内側にそのメールを保持してください。

    +0

    ありがとうございます。 –

    1

    それは

    に達したときに、それが送る最初のメール
    // Always set content-type when sending HTML email 
    mail($to, $subject, $message, $headers); 
    

    と第二電子メールそれだけで最初のメール機能を削除し、それが問題を解決するチェック

    if(mail($to, $subject, $message, $headers)){ 
    

    に達します。

    +0

    あなたの返事をありがとう。それは感謝しています。 –

    関連する問題