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 :

Contenu d'un e-mail en html


Sujet :

Langage PHP

  1. #1
    Membre expérimenté
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 851
    Points : 1 717
    Points
    1 717
    Par défaut Contenu d'un e-mail en html
    Bonjour,

    J'ai un petit souci avec ma fonctionnalité d'envoi d'un mail via un formulaire : quand je reçois le post par mail, il est tout dégueu. Je ne trouve pas pourquoi...

    Voilà mon code (je ne met que la partie de la préparation du mail, le reste fonctionne bien) :
    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
     
    $objet = "[Contact site] " . $objet; // objet du mail, saisi par l'utilisateur
    $message = nl2br($message); // on conserve les sauts de ligne saisis
    $headers  = 'MIME-Version: 1.0' . "\n"; // Version MIME
    $headers .= 'Reply-To: '.$mail_exp."\n"; // Mail de reponse
    $headers .= 'From: <'.$mail_exp.'>'."\n"; // Expediteur
    $headers .= 'Delivered-to: '.$mail_dest."\n"; // Destinataire
    $headers .= 'Cc: '.$mail_dest_cc."\n"; // Copie Cc
    $headers .= 'Bcc: '.$mail_dest_cci."\n\n"; // Copie cachée Bcc
     
    if (mail($mail_dest, $objet, $message, $headers)) { // Envoi du message
    	$message_resultat_envoi = "Le message a bien &eacute;t&eacute; envoy&eacute;, merci pour votre int&eacute;r&ecirc;t."; // charset ISO-8859-15, j'ai prévu de passer rapidement à l'UTF-8...
    }
    else { // Non envoyé
    	$message_resultat_envoi = "Le message n'a pas &eacute;t&eacute; envoy&eacute; correctement.";
    }
    Je teste les données avec de simples echo : tout est bien en forme (saut de ligne, etc). Seulement c'est ensuite que cela se corse, voilà ce que je reçois par notification mail :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    test<br />
    <br />
    l\'apostrophe<br />
    <br />
    Tout mon code HTML (entre autres...) apparaît. C'est assez gênant, quand je répond directement, je dois retaper tout le message pour que cela fasse plus vrai J'aimerais que tout soit interprêté, comme avec le nl2br() par exemple, mais je ne veux pas voir les balises...

    Je suppose qu'il y a une fonction qui permet de tout remettre en ordre, mais je ne trouve pas.

    Merci d'avance pour votre aide !

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Comment génère tu $message ?

  3. #3
    Membre expérimenté
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 851
    Points : 1 717
    Points
    1 717
    Par défaut
    C'est vrai, j'ai oublié cette partie Ce sont les infos récupérées du formulaire, en $_POST :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $objet 	= trim(htmlentities($_POST['objet'], ENT_QUOTES));
    $mail_exp	= trim(htmlentities($_POST['mail_exp'], ENT_QUOTES));
    $message	= trim(htmlentities($_POST['message'], ENT_QUOTES));
    $reponse	= trim(htmlentities($_POST['antispam_reponse'], ENT_QUOTES));
    $id		= trim(htmlentities($_POST['antispam_id'], ENT_QUOTES));

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    La fonction htmlentities(), permet de transformer des caractères HTML, or tu récupères tes données dans une variable $_POST[], ce qui veut dire que normalement tu n'a pas de caratcères HTML.


    La fonction nl2br(), ajoute à chaque fin de ligne la balise HTML suivante '<br />', tu ne dois pas l'utiliser pour afficher ton mail.

    Maintenant tu peux passer ton mail avec les balises HTML, il te faut alors ajouter des entêtes à ta fonction mail .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     // Pour envoyer un mail HTML, l'en-tête Content-type doit être défini
         $headers  = 'MIME-Version: 1.0' . "\r\n";
         $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

  5. #5
    Membre expérimenté
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 851
    Points : 1 717
    Points
    1 717
    Par défaut
    Citation Envoyé par MaitrePylos Voir le message
    Maintenant tu peux passer ton mail avec les balises HTML, il te faut alors ajouter des entêtes à ta fonction mail .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     // Pour envoyer un mail HTML, l'en-tête Content-type doit être défini
         $headers  = 'MIME-Version: 1.0' . "\r\n";
         $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
    Ok c'est donc la ligne Content-type qu'il me manque ! Je l'essaye dès que possible

  6. #6
    Membre expérimenté
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 851
    Points : 1 717
    Points
    1 717
    Par défaut
    Bonjour,

    C'était bien ça : l'ajout de la ligne "Content-type" a enlevé les balises HTML. Pour le souci des apostrophes, j'ai ajouté un stipslashes() sur les champs Objet et Message (pourtant je ne fais pas de addslashes() et magic_quotes est à Off...), et j'ai ajouté un str_replace() pour les caractères restants (le &#039; notamment). Ce n'est pas très propre mais ça permet au moins d'avancer et d'approfondir plus tard

    Merci à vous pour votre aide.

  7. #7
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Points : 5 347
    Points
    5 347
    Billets dans le blog
    5
    Par défaut
    Bonjour,
    Je me permet de relancer ce post afin de ne pas en ouvrir un autre sur le même sujet.
    J'ai un soucis, malgré les balises de "headers" je n'ai pas de html dans mon mail. tout est en text plain !
    Je ne comprend pas pourquoi, voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function envoimail($email, $pss, $file)
    	{
    		$to = $email;
    		$subject = "Vous avez déposer un fichier sur le serveur de l'@coss";
    		$msg = "Vous avez déposé le fichier : ".$file;
    		$msg .= "Voici votre mot de passe pour accèder à votre fichier : ";
    		$msg .= "<strong><font color=\"red\">".$pss."</strong></font>"."<br>";
    		$msg .= "<a href=\"ms-share01.integr.ac750.recouv\">Cliquer ici pour télécharger ou déposer un fichier</a>";
    		$msg .= "<br><br><br><font color=\"#707070\">Ce message est généré automatiquement, vous ne pouvez pas y répondre</font>";
    		$headers = 'Mime-Version 1.0'."\r\n";
    		$headers .= 'Content-type: text/html; charset=utf-8'."\r\n";
    		$headers .= "\r\n";
    		mail($to, $subject, $msg, $headers);
    	}
    Merci par avance
    Aide les autres...
    Et les autres t'aideront....
    Mon site DVP
    N'oubliez pas de consulter les FAQ SharePoint et les cours et tutoriels SharePoint

    N'oubliez pas de voter pour les messages dont la réponse est pertinente

  8. #8
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Points : 5 347
    Points
    5 347
    Billets dans le blog
    5
    Par défaut
    le pb venait de là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $headers = 'Mime-Version: 1.0'."\r\n";
    $headers .= 'Content-type: text/html; charset=utf-8'."\r\n";
    $headers .= "\r\n";
    Aide les autres...
    Et les autres t'aideront....
    Mon site DVP
    N'oubliez pas de consulter les FAQ SharePoint et les cours et tutoriels SharePoint

    N'oubliez pas de voter pour les messages dont la réponse est pertinente

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

Discussions similaires

  1. [mailto]Formatage d'un mail en HTML
    Par goonsort dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 25/11/2005, 16h40
  2. Automation Mail en HTML Via OUTLOOK EXPRESS
    Par Stéphane Olivier BERNARD dans le forum Access
    Réponses: 1
    Dernier message: 01/11/2005, 09h01
  3. [Mail] Problème mail en html
    Par Vinzius dans le forum Langage
    Réponses: 6
    Dernier message: 10/09/2005, 22h51
  4. Fonction mail avec HTML et images
    Par nico33307 dans le forum Modules
    Réponses: 1
    Dernier message: 05/07/2005, 23h25
  5. [mail] page html pour mail
    Par Mr.White dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 14/03/2005, 16h55

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