Partage
  • Partager sur Facebook
  • Partager sur Twitter

PHP mail() et GMail

    23 décembre 2016 à 14:30:03

    Bonjour,

    Je tente d'envoyer des mails depuis mon site (avec la fonction mail()). Elle fonctionne parfaitement et je reçois tous les mails, saufs quand j'essaye d'en envoyer à une adresse GMail...

    	$message = "<span style=\"font-family: Courier;\">Bonjour, " . $prenom . " " . $name . "<br />
    		    Test";
    	$headers =  "From: \"Pierre LAGOUTTE\"<postmaster@plagoutte.eu>\n"; // Expéditeur
    	$headers .= "Content-type: text/html; charset=\"utf-8\""; // Encodage en HTML et UTF-8
    	mail($mail, "Bonjour !", $message, $headers); // Envoi du mail

    Il doit certainement manquer quelque chose dans mon Header mais je ne vois pas quoi...

    Merci d'avance de votre aide !

    Bien cordialement,

    • Partager sur Facebook
    • Partager sur Twitter
      26 décembre 2016 à 11:14:42

      Gmail est particulièrement chatouilleux en ce qui concerne la réception d'e-mail qui proviennent de serveurs avec des "non correspondances". Pour ne pas avoir de mauvaises surprises, il faut impérativement que l'adresse d'envoi FROM corresponde parfaitement au serveur d'envoi. Il y a beaucoup d'hébergeur qui ont des serveurs de courriers qui n'ont pas le même domaine que votre propre domaine... ce que Gmail déteste. Dès qu'il constate que des choses sont différentes, il suspecte immédiatement un SPAM. On se retrouve alors au fond du dossier SPAM, ou parfois c'est encore pire, bien dans la boite de réception de l'utilisateur mais avec un énorme et très dissuasif message d'avertissement bien flippant...

      Etes-vous sûr que les mails ne finissent pas dans les SPAM ?

      Evitez aussi les éléments non encodés dans les headers... En l'occurence votre objet "Bonjour !" contient un caractère spécial qui pourrait, lui aussi, être source de difficultés.

      Enfin, et ça peut être mis en lien avec ma première remarque, attention à votre From pour lequel il manque un espace. Voici l'exemple tiré de la documentation PHP : http://php.net/manual/fr/function.mail.php (exemple 4)

      $headers .= 'From: Anniversaire <anniversaire@example.com>' . "\r\n";

      Utilisez des ' pour éviter les \" dans la chaîne headers, et n'oubliez pas l'espace entre Nom et <adresse>.

      -
      Edité par Nicolas B 26 décembre 2016 à 11:17:53

      • Partager sur Facebook
      • Partager sur Twitter
      Nicolas - Développeur PHP qui bricole pas mal, utilisant Bootstrap, Materialize, MySQL et quelques astuces piochées par ci par là. Codeigniter a changé ma vie de codeur :D
        31 décembre 2016 à 16:14:00

        Bonjour Nicolas,

        Merci pour cette réponse claire et détaillée. Mon mail finit effectivement dans le dossier SPAM de GMail, motif : le contenu de ce message s'apparente à un SPAM.

        J'ai suivi toutes vos précieuses indications à la lettre, mais, malheureusement, cela ne change rien...

        Cordialement,

        Pierre Lagoutte

        -

        • Partager sur Facebook
        • Partager sur Twitter
          31 décembre 2016 à 17:48:09

          Plusieurs éléments peuvent jouer en faveur d'une situation meilleure...

          • Utiliser comme adresse d'envoi du mail un adresse qui existe réellement (exemple : contact@monserveur.fr)
          • Utiliser une adresse qui correspond bien, si le script se situe sur monserveur.fr, alors avoir une adresse en @monserveur.fr
          • Utiliser les fonctionnalités "DKIM" avec une clé d'au moins 1024 bits
          • Toujours utiliser la même adresse pour l'ensemble des envois qui proviennent du serveur / des scripts PHP
          • Utiliser les fonctionnalités "Sender Policy Framework" ou SPF qui fait la liste des courriels qui ont le droit de sortir du domaine
          • Utiliser les fonctionnalités "Domain-based Message Authentication, Reporting & Conformance" ou DMARC dans la même logique
          • Il faut respecter les normes RFC 5322 (pour éviter de faire des Header qui provoquent des erreurs ou ne peuvent pas être lus correctement)
          • Il est hautement recommandé de générer un Message-ID: unique dans l'entête du message envoyé
          • ...

          Il existe quelques conseils officiels de GMAIL ici : https://support.google.com/mail/answer/81126?hl=fr Mais ces quelques éléments sont déjà de bonnes idées. Quand tu as un hébergeur qui propose le CPanel, alors tout est bien rangé dans le menu "Authentification" de la gestion des adresses courriel.

          Evidemment si tu as un hébergeur mutualisé qui accepte des zozos qui font n'importe quoi et bombardent tout le monde de SPAM, il est aussi envisageable que le serveur que tu utilises (comme d'autres) se soit fait blacklisté... 

          • Partager sur Facebook
          • Partager sur Twitter
          Nicolas - Développeur PHP qui bricole pas mal, utilisant Bootstrap, Materialize, MySQL et quelques astuces piochées par ci par là. Codeigniter a changé ma vie de codeur :D
            6 octobre 2019 à 21:43:59 - Message modéré pour le motif suivant : Merci de créer votre propre sujet


            PHP mail() et GMail

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown