邮件作为垃圾邮件发送 - phpmailer,如何避免

Sub*_*axe 3 php spam-prevention spam phpmailer

我知道,在第一眼看,许多用户将此问题标记为重复,但在阅读了10多个问题之后,我没有得到任何满意的答案,几乎所有问题都有答案,例如"你可以做的事情不多.","我不确定","没有确定的射击技巧"等等,这就是我写这个问题的原因,我认为这是非常普遍的问题,而且每个php开发人员都至少面对它一次,确实足够的语言:),现在我的问题是......

我正在开发一个项目管理应用程序,并且在创建任何任务时使用phpmailer发送邮件,或者任何有关任何错误邮件的评论被发送给相关用户,实际上不是在动作发生后立即发送邮件我创建了"通知"表我实际保存所有邮件数据和cron脚本,然后发送所有邮件,这是我的cron脚本的一部分.

$query = "select * from notifications where  1 ";
    $projects = $obj_basic->get_query_data($query);  

    if(!empty($projects))
    {
        foreach($projects as $data)
        {       
            $message = html_entity_decode($data['content'], ENT_QUOTES);            
            list($ton, $email) =  get_name_email($data['to']);      

            if(!empty($email))
            {
                $query = "select send_notification from users where email='$email' AND send_notification !='1' ";
                $users = $obj_basic->get_query_data($query);
                if(!empty($users))
                {
                    $deleteQuery = "delete from notifications where id ='".$data['id']."'";
                    $obj_basic->run_query($deleteQuery, 'DELETE');
                    continue;
                }

                $comment_id = $data['reference_id'];
                $attribute = $data['attribute'];
                $mail = new PHPMailer();
                list($fromName, $fromEmail) =  get_name_email($data['from']);       
                if(!empty($comment_id) && $attribute == 'comment')
                {
                    $fromEmail = 'comment@changewebaddress.com';
                }

                $mail->SetFrom($fromEmail, $fromName);
                $mail->AddReplyTo($fromEmail, $fromName);
                $mail->AddAddress($email, $ton);
                $mail->BouncedTo = $fromEmail;
                $mail->IsHTML(true);                               
                $mail->Subject  = $data['subject'];              
                $mail->Body =  $message;        
                $MessageID = "<".md5($comment_id.'_'.$email).'@changewebaddress.com>';
                $mail->MessageID= $MessageID;

                if($mail->Send()) {         
                    if(!empty($comment_id) && $attribute == 'comment')
                    {
                        $query = "SELECT message_id FROM `project_comments` WHERE `id`='$comment_id'; ";
                        $project_comments = $obj_basic->get_query_data($query, 'SELECT');

                        if(!empty($project_comments))
                        {
                            $project_comments[0]['message_id'] = html_entity_decode(trim($project_comments[0]['message_id'], ","));
                            $query = "UPDATE  `project_comments` SET `message_id`=CONCAT_WS(',',  '".mysql_escape_string($project_comments[0]['message_id'])."', '".mysql_escape_string(html_entity_decode($MessageID))."') WHERE `id`='$comment_id'; ";
                            $obj_basic->run_query($query, 'UPDATE');
                        }                       
                    }                   
                    $deleteQuery = "delete from notifications where id ='".$data['id']."'"; 
                    $obj_basic->run_query($deleteQuery, 'DELETE'); 
                }           
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

按什么我已经测试一切看起来不错,因为我使用的PHPMailer它集所需的头还设置"返回路径:"和"回复到:"在标题中.

在这个问题上有没有确切的解决方案

Sam*_*tch 15

  1. 确保正在设置所有必需的标头.
  2. 检查是否有任何其他可选标题,您应该设置.
  3. 某些过滤器不赞成发送包含不匹配的文本/ HTML部分的HTML /多部分消息.
  4. 绝对任何以编程方式发送的邮件都应该有关于如何选择退出的链接或说明.这通常只由人工策划的黑名单和ISP的滥用部门强制执行.
  5. 确保您的SMTP服务器未列入黑名单或声誉不佳.
  6. 确保您的Web服务器声誉不佳.一些扫描仪包括链中每个MTA的声誉.
  7. 在发送消息之前,请查看消息的内容.如果其中的任何内容甚至可以被粗略地解释为试图向某人出售某些东西,那么就改变它.
  8. 将一只小动物献给黑暗的电子邮件神,希望不要寄予希望.
  9. 检查标记为垃圾邮件的邮件标题,以查看垃圾邮件过滤系统是否保留了有关其被阻止原因的有用信息.
  10. 询问接收服务器的管理员消息被阻止的原因.
  11. 接受没有,永远不会是"在这个问题上的确切解决方案".永远.

  • 关于第8步.根据你的经验,有毛茸茸,可爱的动物比其他动物,如蜥蜴或蟑螂更好的效果?:d (8认同)