IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

un envoi de mail PHP qui ne marche PRESQUE nul part


Sujet :

Langage PHP

  1. #1
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 468
    Points : 5 826
    Points
    5 826
    Billets dans le blog
    1
    Par défaut un envoi de mail PHP qui ne marche PRESQUE nul part
    Bonsoir,

    j'ai testé une fonction d'envoi de mail toute bête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    <?php 
    $destinataire = "---";
    $sujet ="test";
    $message = "test";
    $em="---";
     
       $headers  = "MIME-Version: 1.0 \n";
       $headers .= "Content-type: text/html; charset=iso-8859-1 \n";
       $headers .= "From: $em  \n";
       $headers .= "Disposition-Notification-To: $em  \n";
     
       // Message de Priorité haute
       // -------------------------
       $headers .= "X-Priority: 1  \n";
       $headers .= "X-MSMail-Priority: High \n";
     
     
     
     
    mail($destinataire,
         $sujet,
         $message,
         $headers);
    ?>
    mais elle ne marche (le mail arrive) que chez un seul hébergeur sur 4 : pourquoi ?

  2. #2
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 146
    Points : 9 386
    Points
    9 386
    Par défaut
    Tu as essayé en enlevant un à un les headers afin de voir celui qui n'était pas très accepté ?
    Pour ma part j'aurai un penchant pour tester sans la priorité.

  3. #3
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 468
    Points : 5 826
    Points
    5 826
    Billets dans le blog
    1
    Par défaut
    Non, c'est vrai que je n'y avais pas pensé : chez l'un des hébergeurs, c'est le from qui coince (et pas la priorité)(ce qui est un peu gênant...) et chez un autre, même sans aucun header, pas de mail...

  4. #4
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 146
    Points : 9 386
    Points
    9 386
    Par défaut
    Certains hébergeurs n'autorisent pas l'envoi de mail si le from n'est pas une adresse de leur hébergement (et qui existe).

    Pour ton dernier... Beh à part vérifier si la fonction mail est bien activée et sinon voir avec le support.

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    pourquoi "Message de Priorité haute" ?

  6. #6
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 468
    Points : 5 826
    Points
    5 826
    Billets dans le blog
    1
    Par défaut
    juste par habitude (copier-coller), mais comme ce n'est pas ça qui coince...

  7. #7
    Membre éclairé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 411
    Points : 735
    Points
    735
    Par défaut
    Je pense que tu as tous les headers que les serveurs mails détestent...
    L'envoi de mail à répétition avec une priorité haute ouvre la porte au blacklistage de l'ip de ton serveur d'envoi.
    Il en va de même pour la demande d'accusé de réception (Disposition-Notification-To) surtout si ce champ est accompagné de "---" ou d'une adresse imaginaire (test@example.com par exemple) ou d'une adresse blacklistée ou enfin d'une adresse ne provenant pas du même serveur que l'envoi.

    Certains hébergeurs n'autorisent pas l'envoi de mail si le from n'est pas une adresse de leur hébergement (et qui existe).
    +1 pour transgohan mais pas que pour l'envoi.

    A la réception, les serveurs font plusieurs vérifications pour admettre le mail à la réception. Il y a, par exemple, la vérification SPF qui vérifie que l'adresse expéditeur appartient bien au domaine du serveur d'envoi. (genre un mail from test@gmail.com mais envoyé par le SMTP de yahoo, ça passe mal)

    Sachant que les listes noires sont souvent communes à plusieurs serveurs mail et que les envois via PHP sont souvent observés de près par les hébergeurs, calmez-vous sur les headers "folkloriques", suivez les bonnes pratiques en vigueur et tout ira bien.

  8. #8
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 468
    Points : 5 826
    Points
    5 826
    Billets dans le blog
    1
    Par défaut
    Et si je limite le header à "", c'est fantaisiste ? En tout cas, ça ne marche pas non plus...

  9. #9
    Membre éclairé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 411
    Points : 735
    Points
    735
    Par défaut
    Oui, c'est fantaisiste.
    Avec vous, c'est tout ou rien, non ?
    Pas de headers, c'est pour le serveur recevant tout aussi louche que les autres cas évoqués plus tôt.
    Imaginez, vous recevez un colis louche, sans expéditeur ni aucune marque, ça vous paraît bizarre? Bah, là c'est pareil. Un email sans header "from", c'est souvent refusé.

    Personnellement, je considère qu'il faut au minimum :
    • From (qui doit correspondre au domaine du serveur d'envoi ! Par exemple, si vous êtes sur le serveur example.com, il faut mettre une adresse example@example.com et pas example@test.com)
    • Reply-to (qui elle, peut être n'importe laquelle)


    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $headers .= "From: $auteur\n";
    $headers .= "X-Mailer: PHP ".phpversion()."\n";
    $headers .= "Reply-To: $auteur@phpeasy.com\n";
    mail ($destinataire,$subject,$message,$headers);
    Peuvent s'ajouter le mime et l'encodage mais c'est souvent seulement si le mail est en html.

    Maintenant, même si vous ajoutez ces headers, rien n'assure la délivrabilité de l'email si vous êtes en localhost ou en mutualisé et que vous (avez essayé) essayez toujours sur le même serveur de réception. L'ip du serveur d'envoi pouvant être blacklisté ou semblant louche pour le serveur recevant.

  10. #10
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    pourquoi X-Mailer: PHP ?

  11. #11
    Membre éclairé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 411
    Points : 735
    Points
    735
    Par défaut
    X-mailer est l'identifiant de l'application envoyant le mail.
    Si vous regardez les en-têtes complètes des mails que vous recevez, il est toujours présent avec, par exemple, "Outlook" (Microsoft Office Outlook 12.0) "Thunderbird" (Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.2.17) Gecko/20110414 Lightning/1.0b2 Thunderbird/3.1.10), "PHP", etc...
    Bien sûr, on peut y mettre ce qu'on veut. Par exemple, les créateurs de redmine, on décidé de mettre X-mailer: redmine tout simplement.
    J'ai pour habitude de le mettre car, comme de nombreux confrères dans ma boîtes, j'utilise un add-on qui "iconise" l'application expéditrice (c'est beaucoup plus beau ).

    Cet en-tête n'est pas obligatoire et, je pense (mais il faudrait tester) que la fonction "mail()" de PHP en place un par défaut.

    Il faut juste prendre en compte que, plus on montre patte-blanche, mieux sera la délivrabilité du mail. Si on n'a pas accès au paramétrage complet du serveur, je penche pour : soit l'utilisation de celui-ci par défaut (risqué mais simple à mettre en place pour les "débutants") soit l'utilisation d'un serveur SMTP "relai" (compliqué à mettre en place mais souvent plus fiable pour les envois de "non-masse")

    Vous pouvez avoir de bons conseils pour l'envoi de mail en masse ici. Ces conseils (que ce soit au niveau conf, que marketing) sont plutôt pour les avoir testés moi-même. L'objet du mail, le contenu, le HTML, les conf, pas mal de choses y est.

  12. #12
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 468
    Points : 5 826
    Points
    5 826
    Billets dans le blog
    1
    Par défaut
    effectivement, j'ai mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $from="---@nom_domaine";
    $em="---";
     
    $headers="";
     
      $headers  .= "MIME-Version: 1.0 \n";
       $headers .= "Content-type: text/html; charset=iso-8859-1 \n";
       $headers .= "From: $from  \n";
        $headers .= "Reply-To: $em\n";
    et c'est bien arrivé. (et sans X-Mailer)

  13. #13
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par Shikiryu Voir le message
    X-mailer est l'identifiant de l'application envoyant le mail.
    je sais bien...
    c'est juste que c'est inutile et qu'en plus ça donne une indication sur la version du serveur, donc un risque niveau sécurité


    il faut aussi bien attention que le mail.add_x_header soit sur Off

  14. #14
    Membre éclairé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 411
    Points : 735
    Points
    735
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    et c'est bien arrivé. (et sans X-Mailer)
    Voilà qui est plus clean.
    Comme je l'ai dit, X-mailer n'est pas indispensable.
    Peux-tu regarder quel est le X-mailer du mail que tu as reçu via ton script ?

    Citation Envoyé par stealth35 Voir le message
    je sais bien...
    c'est juste que c'est inutile et qu'en plus ça donne une indication sur la version du serveur, donc un risque niveau sécurité

    il faut aussi bien attention que le mail.add_x_header soit sur Off
    Super. Un hacker même débutant, n'a pas réellement besoin de connaitre la version PHP du serveur pour... faire ce qu'il a à faire. Au mieux, il gagne 10 min.
    Et c'est loin d'être inutile de dire que le mail vient d'un script PHP (on n'est effectivement pas obligé de donner la version, c'était un exemple)
    Quant à mail.add-x-header, il est, chez les hébergeurs sérieux, automatiquement à off. (C'est mieux de vérifier, mais chez les miens, ils ne sont pas présents)

  15. #15
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par Shikiryu Voir le message
    Super. Un hacker même débutant, n'a pas réellement besoin de connaitre la version PHP du serveur pour... faire ce qu'il a à faire. Au mieux, il gagne 10 min.
    moi je laisse la porte ouverte de chez moi puisque de tout façon un voleur "même débutant, n'a pas réellement besoin de connaitre le type de le serrure de la porte pour... faire ce qu'il a à faire. Au mieux, il gagne 2 sec."

    c'est ridicule comme raisonnement...

  16. #16
    Membre éclairé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 411
    Points : 735
    Points
    735
    Par défaut
    J'aime beaucoup les gens qui ne lisent que ce qui les intéressent.

    Les mots "exemple" et "n'est pas indispensable" passent totalement à la trappe sur ce forum
    J'ai quand même répondu plus qu'en détails au niveau de l'envoi de mail (que ce soit en PHP ou autre, ce n'était pas un problème dû au langage mais à la compréhension de ce qu'à besoin un email pour bien passer, je ne voulais pas approfondir la technique plus que ça.)

    Heureusement que l'OP a pris ça en compte et... a résolu son problème grâce à ça.

    Après ton analogie est peu appropriée. Donner la version utilisée de PHP dans un email, c'est bien la moindre des préoccupations niveau sécurité dans PHP (contrairement à la marque de la serrure ou de laisser "la porte ouverte"). Bien sûr, on peut s'en passer mais, encore une fois, c'était un exemple et j'ai donné sa signification après ta demande, l'OP en fait ce qu'il veut.

    Merci zorro.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 25/08/2009, 14h47
  2. [MySQL] Tableau et envoi e-mail PHP
    Par creative69 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 30/10/2008, 12h03
  3. [Mail] envoi de mail php
    Par nicordi dans le forum Langage
    Réponses: 16
    Dernier message: 31/10/2006, 00h00
  4. Formulaire avec du PHP qui ne marche pas !
    Par Sandara dans le forum Langage
    Réponses: 19
    Dernier message: 02/06/2006, 18h26
  5. Page de login -- script PHP qui ne marche pas
    Par Alexlesilex dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 6
    Dernier message: 24/04/2006, 16h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo