我的联系方式PHP Form每次提交都会发送7封电子邮件

时间:2015-10-08 08:50:25

标签: php forms email contact

我的PHP联系我们表格发送电子邮件太好了 但是每次提交我收到7封电子邮件 问题是我不知道为什么每次提交都会收到7封电子邮件 有什么想法吗?

CODE

<?php

if(isset($_POST['Send'])){
    $first_name =trim($_POST['first_name']);
    $last_name=trim($_POST['last_name']);
    $phone_number=trim($_POST['phone_number']);
    $email=trim($_POST['email']);
    $msg=trim($_POST['msg']);
    $name=$first_name." ".$last_name;
    if($first_name == '' ||$last_name =='' || $phone_number == '' || $email == ''|| $msg == ''  ){
        $merror = "<p style='color:red;'> * Kindly fill all Fileds<p>";
    }else{
        foreach($_POST as $value){
            if(stripos($value, 'Content-Type:')!== FALSE || $_POST['Address']!== "" ) {
                $merror = "<p style='color:red;'> * The information you have entered has a problem</p>";
            }else{
                require_once "class.phpmailer.php";
                $mail= new PHPMailer();
                if(!$mail->ValidateAddress($email)){
                   $merror = "<p style='color:red;'> * Please enter a valid email address</p>"; 
                }else{
                    $email_body = "";
                    $email_body = $email_body . "Name: ". $name ."<br>";
                    $email_body = $email_body . "Phone: ". $phone_number. "<br>";
                    $email_body = $email_body . "Email: ". $email . "<br>";
                    $email_body = $email_body . "Message: " . $msg . "<br>";
                    $mail->SetFrom($email, $name);
                    $address = "s@example.co";
                    $mail->AddAddress($address, Trial);
                    $mail->Subject= "Ess contact form message ".$name;
                    //$mail->AltBody    = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test
                    $mail->MsgHTML($email_body);
                    if(!$mail->Send()) {
                        echo "Mailer Error: " . $mail->ErrorInfo;
                        echo"<script>window.open('Contact.php','_self')</script>";
                    } 
                    echo"<script>window.open('Contact.php?status=thanks','_self')</script>";    
                }
            }
        }
    }
}
?>

1 个答案:

答案 0 :(得分:0)

许多人对“联系我们”表单也有一个非常常见的错误。

  $mail->SetFrom($email, $name);

这将破坏SPF并导致DMARC失败,如果您使用的邮件服务器上启用了DMARC并且GMAIL启用了DMARC,您将永远不会收到某些人的消息。

由于DMARC是一个更新的协议,很多旧的cookie切割代码用于联系我们表格 - 不考虑这一点。

您可以在此处详细了解:"DMARC - Contact Us Form Nightmare"

建议的解决方法是:

 $mail->SetFrom("<Your email Adddress>, $name);

您的客户会在邮件正文中联系电子邮件,这是完美的。

这样 - 您可以避免文章中的问题大纲。您将无法快速点击“回复”按钮,但至少您将收到启用了DMARC的客户的电子邮件。