如何使电子邮件显示在收件箱中而不是垃圾邮件(php)

如何使电子邮件显示在收件箱中而不是垃圾邮件(php),php,email,phpmailer,Php,Email,Phpmailer,我已经编写了一个php邮件函数,允许我网站上的用户填写表单并将表单发送到我的电子邮件。问题是,一旦用户发送表单,电子邮件就可以工作了,但它只会出现在我的垃圾邮件文件夹中。我不是一名php开发人员,但在做了一些研究后,我注意到很多人提到了phpMail,这是我以前从未听说过或使用过的 如果能帮我一点忙,我将不胜感激 $to="myemail.com"; //Errors $nameError=""; $emailError=""; $errMsg="";

我已经编写了一个php邮件函数,允许我网站上的用户填写表单并将表单发送到我的电子邮件。问题是,一旦用户发送表单,电子邮件就可以工作了,但它只会出现在我的垃圾邮件文件夹中。我不是一名php开发人员,但在做了一些研究后,我注意到很多人提到了phpMail,这是我以前从未听说过或使用过的

如果能帮我一点忙,我将不胜感激

 $to="myemail.com";

    //Errors
    $nameError="";
    $emailError="";
    $errMsg="";


    $errors="";//counting errors


    $name="";
    $email="";
    $message="";
    if(isset($_POST['send'])){


            if(empty($_POST['yourname'])){ //name field empty

                    $nameError="Please enter your name";
                    $errors++; // increament errors
            }else{

                    $name= UserInput($_POST['yourname']);

                    if(!preg_match("/^[a-zA-Z ]*$/", $name)){

                            $nameError="Only letters and white space accepted";
                            $errors++;
                    }

            }

            if(empty($_POST['email'])){

                    $emailError="Enter email";
                    $errors++;
            }else{

                    $email = UserInput($_POST['email']);

                    if(!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $email)){

                            $emailError="Invalid Email";
                            $errors++;
                    }
            }


            if(empty($_POST['msg'])){

                    $errMsg="Enter message";
                    $errors++;
            }else{

                    $message=UserInput($_POST['msg']);
            }


            if($errors <=0){//No errors lets setup our email and send it

                     $headers = "MIME-Version: 1.0" . "\r\n";
                     $headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
                     $headers .= 'From: <' . $email . '>' . "\r\n";


                    $text  = "<p>New Message from $name </p>";
                    $text .= "<p>Name : $name</p>";
                    $text .= "<p>Email : $email</p>";
                    $text .= "<p>Message : $message</p>";


                    mail($to, "Website Contact", $text, $headers);
                    $success="Thank your message was submitted";
                    $_POST= array(); //clearing inputs fields after success

            }


    }

您可以使用他们在标题中发布的变量中的电子邮件。当您的电子邮件服务器收到此消息时,它看起来像是被欺骗了,因为它是。您的站点不会成为该域的邮件服务器之一

在为电子邮件设置MX和DNS记录时,您可以使用SPF或密钥签名来证明是谁发送了邮件,并且邮件来自该域的受信任邮件服务器。您可能希望将从更改为您控制的电子邮件和域。无论如何,你都会收到他们的电子邮件

最坏的情况是,如果你不能控制SPF记录,你至少可以标记来自电子邮件的记录,假设它是你控制的,因为它总是可信的,所以不会进入你的垃圾邮件

$headers .= 'From: <' . $to . '>' . "\r\n";
$headers.='From:'。“\r\n”;

您是否在询问如何使用phpmailer?他们有一个。您的文本必须是完整的html才能正常工作,从doctype类型开始。只有格式正确的html邮件才能发送到收件箱。您没有发件人地址,接收服务器会将其标记为垃圾邮件,因为它不是来自正确的地址。您是否有关于如何写入$headers的示例。='发件人:yourmail@yahoo.com' . “\r\n”;在标题中感谢您的评论我在哪里添加此变量将标题中的行替换为电子邮件中的当前发件人variable@Joel如果我做错事了,你能编辑我的帖子吗?因为我试过了,但还是没有效果
$headers .= 'From: <' . $to . '>' . "\r\n";