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] Envoi d'un mail en tenant compte des sauts de ligne


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 247
    Points : 99
    Points
    99
    Par défaut [Mail] Envoi d'un mail en tenant compte des sauts de ligne
    Bonjour,

    J'ai une question à vous poser à propos de l'envoi de mail à l'aide de la fonction mail()
    Tout d'abord juste une vérification sur la syntaxe de la fonction. Je souhaite que le mail soit envoyé au format html.
    Voici comment j'appelle la fonction mail :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (mail("monmail@gmail.com", "Objet", "$envoi","Content-Type: text/html; charset=\"iso-8859-1\"\n")) {
      echo "Votre email a bien été envoyé. Vous recevrez prochainement une réponse.";
      }
    else echo "Erreur lors de l'envoi de l'e-mail";
    La variable $envoi contient du code html (<b> <br/> etc)
    Apparemment ça marche mais quelques fois gmail cache le mail dans "- Afficher le texte des messages précédents -"
    Je ne sais pas trop pq.

    Mon autre question, plus importante :
    Le mail que j'envoie provient d'un formulaire que l'internaute aura saisi. Celui-ci a la possibilité de faire des sauts de ligne dans un champ textarea. Comment prendre en compte les sauts de ligne ? Par défaut ils ne sont pas pris en compte...

    Merci bcp pour votre aide

  2. #2
    Membre confirmé Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Points : 540
    Points
    540
    Par défaut
    C'est probablement parce que l'internaute saisie dans un textarea donc les passages à la lignes sont de type \r\n alors que tu le voudrait plutot en <br>.

    Dans ce cas, passe ta variable dans la fonction nl2br, et tout devrait rentrer dans l'ordre.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 247
    Points : 99
    Points
    99
    Par défaut
    nickel merci !
    Et pour mon premier pb ? C'est peut etre G-mail qui se trompe...

  4. #4
    Membre confirmé Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Points : 540
    Points
    540
    Par défaut
    Ca me parait clean, cela dit je n'ai jamais envoyé de mail en HTML seulement, mais j'ai toujours crée des mails avec un moins PLAIN + HTML, donc je ne peux pas t'assurer que c'est bon...

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 247
    Points : 99
    Points
    99
    Par défaut
    Citation Envoyé par GregPeck
    Ca me parait clean, cela dit je n'ai jamais envoyé de mail en HTML seulement, mais j'ai toujours crée des mails avec un moins PLAIN + HTML, donc je ne peux pas t'assurer que c'est bon...
    un moins ??

    Un mail est envoyé soit en plain (texte brut?) soit en html mais pas les deux si ?

  6. #6
    Membre confirmé Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Points : 540
    Points
    540
    Par défaut
    Si, comme ça les lecteur de mails lisent la partie qu'ils sont capable de lire.
    Si c'est un lecteur de mode console par exemple, il n'affichera que la partie PLAIN/TEXT.
    Si c'est un navigateur graphique (OE, Thunderbird, Hotmail, etc), il affichera plutot la partie HTML.

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    avec la fonction mail, on peut en effet envoyer du text+html, suffit de faire un truc du genre :

    function mail_html($destinataire, $sujet , $messtxt, $messhtml , $from) {
    $boundary = "-----=" . md5( uniqid ( rand() ) );
    $headers = "Reply-to: $from\n";
    $headers .= "From: $from\n";
    $headers .= "MIME-Version: 1.0\n";
    $headers .= "Content-Type: multipart/alternative; boundary=\"$boundary\"";


    $message = "This is a multi-part message in MIME format.\n\n";
    $message .= "--" . $boundary . "\n";
    $message .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
    $message .= "Content-Transfer-Encoding: quoted-printable\n\n";
    $message .= $messtxt;
    $message .= "\n\n";
    $message .= "--" . $boundary . "\n";
    $message .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";
    $message .= "Content-Transfer-Encoding: quoted-printable\n\n";
    $message .= $messhtml;
    $message .= "\n\n";
    $message .= "--" . $boundary . "--\n";

    return mail($destinataire, $sujet, $message, $headers);
    }

    Pour la partie text area, il y a une batterie de test à faire du genre htmlentities, nl2br, vérifier la présence de tout les caractères spéciaux, et les portions du type <n'importequoi>, car moi j'ai eu parfois ces problèmes, ou l'internaute pouvais générer des erreurs, ou supprimer du texte lorsqu'il y a une erreur de saisie autre part, et que la gestion des erreurs renvoie à la page précédente. Par ailleur, il s'est avéré que quelques caractère font ch*** quand on les tests, mais c'est peut-être moi là.

  8. #8
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    A noter qu'il y a des classes toutes faites pour l'envoi de mail en html :
    http://www.phpguru.org/static/mime.mail.html
    http://phpmailer.sf.net
    http://pear.php.net/package/Mail_Mime

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 247
    Points : 99
    Points
    99
    Par défaut
    Citation Envoyé par Mr N.
    A noter qu'il y a des classes toutes faites pour l'envoi de mail en html :
    http://www.phpguru.org/static/mime.mail.html
    http://phpmailer.sf.net
    http://pear.php.net/package/Mail_Mime
    Et quel est l'intérêt d'utiliser de tels classes ?

  10. #10
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    L'intérêt, c'est que tu peux composer des mails en html, fournir une version alternative en plain/text, ajouter des attachements, gérer les cc, bcc, to de manière transparente... Bref ca vaut vraiment le coup, et ça évite surtout de réinventer la roue !
    Regarde les exemples du premier lien (la lib dont je me sert, les autres je ne connais que de nom), ils sont assez démonstratifs.

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 247
    Points : 99
    Points
    99
    Par défaut
    Citation Envoyé par Mr N.
    tu peux composer des mails en html
    Que veux-tu dire par là ? On a une interface du style Word pour mettre du style dans le mail ?
    J'ai trouvé aucun lien de démo sur les sites cités... Tu en aurais un par hasard ?

  12. #12
    Membre confirmé Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Points : 540
    Points
    540
    Par défaut
    Si tu veux une interface de type word, regarde du coté de htmlarea http://www.htmlarea.com ou tinymce (beaucoup plus à jour) http://tinymce.moxiecode.com/.

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 247
    Points : 99
    Points
    99
    Par défaut
    Non, non je n'en veux pas, je demande simplement par curiosité.

  14. #14
    Membre confirmé Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Points : 540
    Points
    540
    Par défaut
    Ah ok! Bon bah voilà ta curiosité comblée

Discussions similaires

  1. Réponses: 1
    Dernier message: 15/11/2012, 01h08
  2. Réponses: 4
    Dernier message: 11/01/2010, 08h58
  3. [RegEx] Tenir compte des sauts de ligne
    Par Christophe Charron dans le forum Langage
    Réponses: 3
    Dernier message: 08/01/2010, 11h40
  4. [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
  5. [Mail] envoi d'un mail ?
    Par Jeannotc dans le forum Langage
    Réponses: 7
    Dernier message: 12/10/2005, 23h54

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