web-dev-qa-db-fra.com

l'envoi d'email via la fonction mail php va au spam

Je rencontre des difficultés pour envoyer des messages dans ma boîte de réception (compte gmail), mais chaque fois que le message est envoyé dans un dossier de courrier indésirable ... Voici l'extrait de code

     //$ticketDetail is array which contain required information to send.
       sendOwnershipEmail('[email protected]', $ticketDetail);

       function sendOwnershipEmail($email, $ticketDetail) {
            $param = new stdClass();


$param->content = "<div>
    <div><b>".$ticketDetail[0]['ticket_number']."</b></div><br/>
    <div><img src='".$ticketDetail[0]['image_path']."'/></div><br/>
    <div>Ticket with ticket number ".$ticketDetail[0]['ticket_number']." has been requested for tranfer from <div/>
    <div>".$ticketDetail[0]['oldDepartment']." to ".$ticketDetail[0]['newDepartment']." Department <div/>
  </div>";

            $param->sendTo = $email;
            $param->subject = "Request for Department transfer";

        sendMailFunction($param);
    }


    function sendMailFunction($param) {
            $to = $param->sendTo;
            $subject = $param->subject;
            $headers = 'MIME-Version: 1.0' . "\r\n";
            $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
            $headers .= 'From: [email protected]' . "\r\n";
            $message = "<html><head>" .
                   "<meta http-equiv='Content-Language' content='en-us'>" .
                   "<meta http-equiv='Content-Type' content='text/html; charset=windows-1252'>" .
                   "</head><body>" .$param->content.        
                   "<br><br></body></html>";
          mail($to, $subject, $message, $headers);
    }

Et j'ai essayé beaucoup de choses comme définir les en-têtes comme Reply-To, Return-Path, etc.

26
Dinesh Nagar

Le problème est simple: la fonction PHP-Mail n’utilise pas un serveur SMTP bien configuré. 

De nos jours, les clients de messagerie et les serveurs effectuent des vérifications massives sur le serveur d'envoi de courriels, comme les recherches inversées-DNS, les listes grises et les noms de cas. Tous ces tests échoueront avec la fonction php mail (). Si vous utilisez une adresse IP dynamique, c'est encore pire.

Utilisez la classe PHPMailer et configurez-la pour utiliser smtp-auth avec un serveur SMTP dédié et bien configuré (soit un serveur local, soit un serveur distant) et vos problèmes disparaîtront.

https://github.com/PHPMailer/PHPMailer

25
dognose

Essayez de changer vos en-têtes pour ceci:

$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1" . "\r\n";
$headers .= "From: [email protected]" . "\r\n" .
"Reply-To: [email protected]" . "\r\n" .
"X-Mailer: PHP/" . phpversion();

Pour quelques raisons. 

  • L’un d’eux est le besoin d’un Reply-To et, 

  • L'utilisation d'apostrophes au lieu de guillemets doubles. Ce sont ces deux choses, selon mon expérience avec les formulaires, qui déclenchent généralement la fin du message dans la boîte Spam.

Vous pouvez également essayer de changer le $from en:

$from = "[email protected]";


MODIFIER:

Voir ces liens que j'ai trouvés sur le sujet https://stackoverflow.com/a/9988544/1415724 et https://stackoverflow.com/a/16717647/1415724 et https: // stackoverflow.com/a/9899837/1415724

https://stackoverflow.com/a/5944155/1415724 et https://stackoverflow.com/a/6532320/1415724

  • Essayez d’utiliser le serveur SMTP de votre fournisseur de services Internet. 

    Utiliser ceci a apparemment fonctionné pour beaucoup: X-MSMail-Priority: High

http://www.webhostingtalk.com/showthread.php?t=931932

"Mon hôte m'a aidé à activer DomainKeys et les enregistrements SPF sur mon domaine. Désormais, lorsque j'envoie un message de test à mon adresse Hotmail, il ne se termine pas en courrier indésirable . C'était vraiment très facile d'activer ces paramètres Dans cPanel sous Authentification Email, je ne peux pas croire que je n'avais jamais vu ça auparavant . Cela fonctionne uniquement avec l'envoi via SMTP via phpmailer. De toute autre manière, il est toujours marqué comme spam. "

PHPmailer envoie des mails au spam dans Hotmail. comment y remédier http://Pastebin.com/QdQUrfax

13
Funk Forty Niner

Si vous envoyez ceci via votre propre serveur de messagerie, vous devrez peut-être ajouter un en-tête "Sender" qui contiendra une adresse email de votre propre domaine. Gmail va probablement spammer l'e-mail car l'adresse FROM est une adresse Gmail mais n'a pas été envoyée à partir de son propre serveur.

4
Patrick

Ce que nous faisons habituellement avec le courrier électronique, en empêchant les dossiers de courrier indésirable comme destination finale, est d'utiliser Gmail comme serveur smtp ou Mandrill comme serveur smtp.

2
Emile

Une des choses que j'ai observées est probablement que l'adresse e-mail que vous fournissez n'est pas une adresse e-mail valide sur le domaine. comme [email protected]. L'e-mail doit exister sur Google Domain. J'ai eu beaucoup de problèmes avant de comprendre cela moi-même ... J'espère que cela aide.

0
Nazehs