poczta dostarczana jako spam - phpmailer, jak uniknąć

Wiem, że na pierwszy rzut oka wielu użytkowników zaznacza to pytanie jako duplikat, ale po przeczytaniu więcej niż 10 pytań nie otrzymałem żadnej satysfakcjonującej odpowiedzi, prawie wszystkie pytania mają odpowiedzi o słowach: „Niewiele można z tym zrobić.”, „ Nie jestem pewien ”,„ Nie ma pewnej sztuczki strzeleckiej ”itp. Dlatego piszę to pytanie i myślę, że to bardzo ogólne pytania i każdy programista php musi się z tym przynajmniej raz zmierzyć, wystarczy wystarczyć! Pytaniem jest..

Pracuję nad aplikacją do zarządzania projektami i używam phpmailer do wysyłania poczty, gdy tworzone jest jakieś zadanie, lub ktoś komentuje wszelkie wiadomości o błędach wysyłane do powiązanych użytkowników, a właściwie zamiast wysyłać maile, gdy tylko nastąpi akcja, utworzyłem tabelę „powiadomień” gdzie faktycznie zapisuję wszystkie dane pocztowe i skrypt crona, a następnie wysyłam wszystkie maile, oto część mojego skryptu 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 = '[email protected]';
                }

                $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'); 
                }           
            }
        }
    }

jak na to, co testowałem, wszystko wygląda dobrze, ponieważ używam phpmailer ustawia wymagany nagłówek, a także ustawia „Return-Path:” i „Reply-To:” w nagłówku.

Czy jest jakieś dokładne rozwiązanie tego problemu

questionAnswers(4)

yourAnswerToTheQuestion