我的联系我们PHP表单是每次提交发送7封电子邮件


My contact us PHP Form is sending 7 emails per submission

我的PHP contact us form发送邮件太好了
但是我每次提交都会收到7封邮件
问题是我不知道为什么我每次提交都会收到7封邮件。
任何想法吗?

代码
<?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>";    
                }
            }
        }
    }
}
?>

你还有一个很多人在使用"Contact Us"表单时经常犯的错误。

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

这会破坏SPF,也会导致DMARC失败,如果你使用的邮件服务器启用了DMARC,而GMAIL启用了DMARC,那么你将永远无法收到某些人的邮件。

由于DMARC是一个较新的协议,许多用于联系我们表单的旧代码没有考虑到这一点。

你可以在这里阅读更多:"DMARC -联系我们表单噩梦"

建议的解决方法是:

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

你在消息正文中有客户联系电子邮件,这很完美。

这样——你就避免了文章中的问题提纲。你不会很快就能点击"回复"按钮,但至少你会收到那些启用了DMARC的客户的电子邮件。