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 :

[Mail] En-tête fonction mail()


Sujet :

Langage PHP

  1. #1
    Membre éprouvé

    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 634
    Points : 1 205
    Points
    1 205
    Par défaut [Mail] En-tête fonction mail()
    ,

    J'ai un petit problème avec la fonction mail() de php et je ne suis pas un pro dans le développement web. En fait, j'essaie d'envoyer tout simplement un mail au format HTML à partir d'un petit script qui marche bien, mais lorsque je veux mettre un nom complet dans l'en-tête "From" cela ne passe plus. Voici le code que j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    // Définition de l'en-tête du message
    $mailHeader = "From: \"Nom Prenom\" <nom.prenom@serveur.com>\r\n";
    $mailHeader.= "MIME-Version: 1.0\r\n";
    $mailHeader.= "Content-type: text/html; charset=iso-8859-1\r\n";
     
    if(!mail($data['email'], 'Newsletter'.$title, ParseBbCode($content), $mailHeader))
         $errorMails[] = $data['email'];
    Si je mets juste "nom.prenom@serveur.com" au lieu du nom complet ça passe mais autrement non, je reçois l'erreur :
    Citation Envoyé par PHP
    SMTP server response: 553 <"Nom Prenom"> Invalid mail address, must have a domain part in D:\www\airsonic\news\admin\addnew.php on line 58
    J'ai donc analysé la trame et voici ce qui est effectivement envoyé sur le serveur
    Code X : Sélectionner tout - Visualiser dans une fenêtre à part
    MAIL FROM: <"Nom Prenom" <nom.prenom@serveur.com>>\r\n
    Ce qui est faux, on voit que le serveur php a rajouté des < > en trop.

    Question : est-ce qu'il y a une option qui gère cela ou sinon d'où vient cette erreur ? Je n'ai rien trouvé de convaincant à ce sujet .

    d'avance
    Fiquet
    - FAQ SDL
    - FAQ C++

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 82
    Points : 87
    Points
    87
    Par défaut
    Utilise la classe PHPMAILER

    http://stephaneey.developpez.com/tut...php/phpmailer/

    et specifie fromName dans ton header !

    @++
    "Soyez les changements que vous aimeriez voir dans le monde" Mahatma Gandhi

  3. #3
    Membre éprouvé

    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 634
    Points : 1 205
    Points
    1 205
    Par défaut
    Ok, j'essaierai (j'espère que c'est compatible PHP 4 ?). C'est donc impossible à faire marcher en utilisant juste mail() ? Je n'ai pas pensé de préciser que pour le moment je teste en local sur Windows avec un serveur SMTP configuré, j'essayerai de voir si ça marche en uploadant sur un serveur de type Unix.

    En tout cas
    Fiquet
    - FAQ SDL
    - FAQ C++

  4. #4
    Membre éclairé
    Avatar de Dia_FR
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2006
    Messages : 512
    Points : 708
    Points
    708
    Par défaut
    voilà ce que j'utilise pour les mails :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function envoyerEmail($nomDestinataire, $mailDestinataire, $nomExpediteur, $mailExpediteur, $objet, $message) {
     
        $entetesMIME  = "MIME-Version: 1.0\r\n";
        $entetesMIME .= "Content-type: text/plain; charset=iso-8859-1\r\n";
        $entetesMIME .= "From: $nomExpediteur <$mailExpediteur>\r\n";
        $entetesMIME .= "Reply-To: $nomExpediteur <$mailExpediteur>\r\n";
        $entetesMIME .= "To: $nomDestinataire <$mailDestinataire>\r\n";
        $entetesMIME .= "Subject: $objet";
     
        mail("$nomDestinataire <$mailDestinataire>", $objet, $message, $entetesMIME);
     
    }
    et ça marche très bien

    la seule différence c'est les quotes que tu échappes
    je vois pas trop pourquoi ça viendrait de là mais c'est la seule diff que je vois
    essayes avec mon code, voir si ça marche chez toi
    Dia [ Page DVP ] [ Site pro ]

  5. #5
    Membre éprouvé

    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 634
    Points : 1 205
    Points
    1 205
    Par défaut
    Merci, je pourrai essayer ça à partir de ce soir. Mais je commence de plus en plus à me dire que ça vient du fonctionnement de mail() sous Windows, car le résultat est assez bizarre. J'essayerai sur un vrai serveur web.

    Citation Envoyé par Dia_FR
    la seule différence c'est les quotes que tu échappes
    je vois pas trop pourquoi ça viendrait de là mais c'est la seule diff que je vois
    essayes avec mon code, voir si ça marche chez toi
    Oui c'est un essai que j'ai fait en regardant sur certains en-têtes e-mail il y avait ceci. Mais j'ai aussi essayé sans et je recevais aussi une erreur du serveur web.
    Fiquet
    - FAQ SDL
    - FAQ C++

  6. #6
    Membre éprouvé

    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 634
    Points : 1 205
    Points
    1 205
    Par défaut
    Donc je viens d'essayer cette fois-ci sur un serveur. Pour tester, j'ai envoyé un mail lu par un client Outlook, et un autre sur Gmail. Et c'est bien ce que je pensais, l'envoi marche bien donc c'est bon.

    Mais par contre sur Gmail les en-têtes ne sont pas reconnus car il affiche "(expéditeur inconnu)" et l'en-tête dans le corps du message comme ceci (avec tous les caractères html) :
    Content-type: text/html; charset=iso-8859-1

    From: Newsletter test <nom.prenom@test.com>

    <html><body>salut test &eacute;sldfj&eacute;asdfja&agrave;asdfa</body></html>
    Sous Outlook il n'y a donc pas de problème, l'en-tête est bien pris en compte.

    Voici mon code actuel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $mailHeader  = "MIME-Version: 1.0 \r\n";
    $mailHeader .= "Content-type: text/html; charset=iso-8859-1 \r\n";
    $mailHeader .= "From: ".FULL_SENDER." <".EMAIL_SENDER.">\r\n";
     
    if(!mail($data['email'], 'Newsletter'.$title, '<html><body>'.$content.'</body></html>', $mailHeader))
         $errorMails[] = $data['email'];
    Y'aurait-il une erreur ? Je précise que j'ai testé avec le code complet de Dia_FR et que le problème est le même.

    Fiquet
    - FAQ SDL
    - FAQ C++

Discussions similaires

  1. [Mail] envoi d'un mail via la fonction mail() de php
    Par Abac_Angelique dans le forum Langage
    Réponses: 1
    Dernier message: 09/02/2009, 23h46
  2. Réponses: 5
    Dernier message: 27/03/2006, 12h06
  3. [Mail] Problème de Fonction mail()
    Par goma771 dans le forum Langage
    Réponses: 6
    Dernier message: 14/02/2006, 17h12

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