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 :

mauvais header lors de l'envoi d'un mail


Sujet :

Langage PHP

  1. #1
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 386
    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 386
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut mauvais header lors de l'envoi d'un mail
    Bonsoir,

    j'envoie un mail avec la fonction PHP mail et mes différents essais m'ont montré la ligne du header qui coince :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $headers .= "From: ".$vmail." \r\n";
    Qu'est-ce qui ne va pas dans cette ligne ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  2. #2
    Membre émérite
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    Salut,

    Si la variable $headers n'as pas été déclarée/utilisée avant la ligne qui coince, il faut utiliser le signe "=" au lieu de ".=".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $headers = "From: ".$vmail."\r\n";

  3. #3
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 386
    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 386
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Oui, mais voici le code complet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    	 $to      =xxx
         $subject = yyy
         $message = zzz 
    $headers = "MIME-version: 1.0\n".
    "Content-type: text/html; charset= iso-8859-1\r\n".
         'Reply-To: '.$vmail . "\r\n" .
         'X-Mailer: PHP/' . phpversion();
    $headers .= "From: ".$vmail."\r\n";
    if (mail($to, $subject, $message,$headers)) echo "votre message a bien été envoyé à votre correspondant.";
    donc ce n'est pas ça...
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  4. #4
    Membre émérite
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $headers =
    	'From: '.$vmail."\n".
    	'Reply-To: '.$vmail."\n".
    	'X-Mailer: PHP/'.phpversion()."\n".
    	"MIME-version: 1.0\n".
    	"Content-type: text/html; charset=iso-8859-1\n";

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 316
    Points : 366
    Points
    366
    Par défaut
    bonsoir,
    il manque un point de séparation entre ton X-Mailer et ton from
    $headers = "MIME-version: 1.0\n".
    "Content-type: text/html; charset= iso-8859-1\r\n".
    'Reply-To: '.$vmail . "\r\n" .
    'X-Mailer: PHP/' . phpversion();
    $headers .= "From: ".$vmail."\r\n";
    Emmanuel
    --------------------------------------
    aucune réponse en message privé.
    les discussions doivent profiter à tous.

  6. #6
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 386
    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 386
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Ca ne coince plus (le mail est envoyé), mais il n'y a pas d'émetteur (alors que la variable $vmail est bonne ; j'ai fait un echo)...
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 316
    Points : 366
    Points
    366
    Par défaut
    la syntaxe du from c'est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $headers .= "From: LeNom<".$vmail.">\r\n";
    Emmanuel
    --------------------------------------
    aucune réponse en message privé.
    les discussions doivent profiter à tous.

  8. #8
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 386
    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 386
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Même avec cette ligne, il n'y a pas d'émetteur ; j'ai d'abord essayé "LeNom", puis réalisant que ce n'était pas en anglais, j'ai essayé cette ligne là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $headers .= "From: ".$prenom." ".$nom." <".$from.">  \r\n";
    Les variables $prenom et $nom sont bonnes, mais il n'y a pas d'émetteur...
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 316
    Points : 366
    Points
    366
    Par défaut
    montres-nous un print de ta ligne d'envoi pour voir ce que renvoit ta concaténation
    Emmanuel
    --------------------------------------
    aucune réponse en message privé.
    les discussions doivent profiter à tous.

  10. #10
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 386
    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 386
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    J'ai un petit souci que je ne comprends pas : je fais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $headers .= "From: ".$vnomprenom." <".$vmail.">  \r\n";	 
     
    echo '<font color="white">vmail='.$vmail.' nom emetteur='.$vnomprenom.' <br>header='.$headers.'</font><br>';
    et j'obtiens ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    vmail=schmittlau@aol.com nom emetteur=Schmitt Laurent 
    header=MIME-version: 1.0 Content-type: text/html; charset= iso-8859-1 Reply-To: schmittlau@aol.com X-Mailer: PHP/4.4.9From: Schmitt Laurent
    Pourquoi le <".$vmail."> n'apparaît-il pas dans le header ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  11. #11
    Membre émérite
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    Parce qu'à mon avis, il y a "Content-Type: ...'' avant "From: ..."

    Le code ci-dessous devrait fonctionner.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $vnomprenom='Schmitt Laurent';
    $vmail='schmittlau@aol.com';
     
    $headers=
    	'From: "'.$vnomprenom.'" <'.$vmail.">\n".
    	'Reply-To: '.$vmail."\n".
    	'X-Mailer: PHP/'.phpversion()."\n".
    	"MIME-Version: 1.0\n".
    	"Content-Type: text/html; charset=iso-8859-1\n";

  12. #12
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 386
    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 386
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    J'ai fait ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $headers  = "MIME-Version: 1.0 \n"; 
    $headers .= 'From: "'.$vnomprenom.'"<'.$vmail.'>\r\n';
    $headers .= "Content-type: text/html; charset=iso-8859-1 \n"; 
    $headers .= "Disposition-Notification-To: $from  \n";
    $headers .= "X-Priority: 1  \n"; 
    $headers .= "X-MSMail-Priority: High \n";	 
     
     echo 'vmail='.$vmail.'<br>header='.$headers.'<br>';				
    if (mail($to, $subject, $message,$headers)) echo "votre message a bien été envoyé à votre correspondant.";
    et l'echo donne ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    vmail=schmittlau@aol.com
    header=MIME-Version: 1.0 From: "Schmitt Laurent"\r\nContent-type: text/html; charset=iso-8859-1 Disposition-Notification-To: X-Priority: 1 X-MSMail-Priority: High
    J'y comprends rien
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  13. #13
    Modérateur
    Avatar de blueice
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2003
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 487
    Points : 5 134
    Points
    5 134
    Par défaut
    Beaucoup plus simple que de se prendre la tête, utiliser la classe phpmailer ^^
    -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_SIGNATURE -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
    Dans la mesure du possible, essayez de montrer votre problème en situation réelle en nous donnant une url, que l'on puisse tester.
    Pensez également à cocher

    Aucun problème ne doit être résolu en MP (Message Privé) le forum est là pour ça.

    Dimension Internet

  14. #14
    Membre émérite
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    Je code que j'ai posté est bon. Le problême est que tu te bases sur echo...

    Avec echo, on ne voit pas $vmail car il est entre les caractères '<' et '>'.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<pre>'.htmlspecialchars($headers,ENT_QUOTES).'</pre>';
    Là, il apparaitra.

  15. #15
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 386
    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 386
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Oui, il apparaît bien mais le "\r\n" reste... :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    MIME-Version: 1.0 
    From: "Schmitt Laurent"<schmittlau@aol.com> \r\nContent-type: text/html; charset=iso-8859-1 
    Disposition-Notification-To:   
    X-Priority: 1  
    X-MSMail-Priority: High
    et l'émetteur, ça me mets "aucun(e)". (et j'ai regardé phpmailer, mais je n'ai rien compris)
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  16. #16
    Membre émérite
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    L'apparition de \r\n provient du fait qu'ils n'ont pas été placés entre guillemets à la ligne ci-dessous.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $headers .= 'From: "'.$vnomprenom.'"<'.$vmail.'>\r\n';
    À savoir,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $eol = '\r\n'; // Donne 4 caractères, soit \, r, \, et n
    $eol = "\r\n"; // Donne 2 caractères, soit le retour et le saut de ligne
    Voici le nouveau code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $headers=
    	'From: "'.$vnomprenom.'" <'.$vmail.">\n".
    	'Reply-To: '.$vmail."\n".
    	'Disposition-Notification-To: '.$from."\n";
    	'X-Mailer: PHP/'.phpversion()."\n".
    	"X-Priority:1\n".
    	"X-MSMail-Priority: High\n".
    	"MIME-Version: 1.0\n".
    	"Content-Type: text/html; charset=iso-8859-1\n";
    Edit: Le saut de ligne (\n) suffit, inutile d'utiliser le retour à la ligne (\r)

  17. #17
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 386
    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 386
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Génial : grâce à ces guilllemets, j'ai l'émetteur. Tu as l'air d'en connaître un rayon.
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  18. #18
    Membre émérite
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    Comme on dit...
    La connaissance s'accroit quand on la partage

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

Discussions similaires

  1. [PHP 5.0] Erreur de header lors de l'envoi des cookies
    Par Kuchiki Byakuya dans le forum Langage
    Réponses: 3
    Dernier message: 17/03/2012, 02h24
  2. [Mail] Caractères échappés lors de l'envoi d'un mail
    Par cd090580 dans le forum Langage
    Réponses: 4
    Dernier message: 18/04/2007, 15h25
  3. [Mail] Problème lors de l'envoi d'un mail
    Par figo57 dans le forum Langage
    Réponses: 2
    Dernier message: 02/07/2006, 22h55
  4. Problème lors de l'envoie d'un mail (JavaMail)
    Par nicofromChina dans le forum API standards et tierces
    Réponses: 7
    Dernier message: 09/05/2006, 10h23
  5. [javamail] pb lors de l'envoi d'un mail
    Par mawashee dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 08/09/2005, 16h50

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