PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 19-02-2011 09:43:44

dobi19
Membre
Inscription : 23-07-2009
Messages : 35

Récupérer de nouveaux champ dans l'e-mail

Bonjour,

j'ai un petit soucis concernant le traitement d'un formulaire de contact dont le code source
est à cette adresse: http://www.grainedekeupon.fr/ccm/share/ … l_php5.php

Sur ce script le formulaire n'a que trois champs, j'aimerais en rajouter d'autres qui apparaitront dans le message du mail

La il n'y a que message qui apparait dans le mail, et par exemple j'aimerais qu'il y est nom, prénom, ville...

Ce que j'ai fait, j'ai rajouté un champ ville pour faire un test, et rajouter ceci pour le traitement:

        $ville = filter_input( INPUT_POST, 'ville', FILTER_UNSAFE_RAW );
        if( $ville === NULL OR $ville === false OR empty( $ville ) OR $message === MAIL_VILLE ) // si le message fourni est vide ou égale à la valeur par défaut
        {
            $errors[] = 'Vous devez écrire une ville.';
        }


        if( count( $errors ) === 0 ) // si il n'y a pas d'erreurs
        {      
            if( mail( MAIL_TO, $object, $message, $ville, "From: $from\nReply-to: $from\n" ) ) // tentative d'envoi du message
            {
                $mailSent = true;
            }
            else // échec de l'envoi
            {
                $errors[] = 'Votre message n\'a pas été envoyé.';
            }

Du coup si je rajoute $ville dans

            if( mail( MAIL_TO, $object, $message, $ville, "From: $from\nReply-to: $from\n" ) ) // tentative d'envoi du message
            {
                $mailSent = true;
            }

ça me refuse l'envoie du message et si je l'enlève, le message s'envoie mais ville n'apparait pas dans le mail

Si vous pouviez m'aider, merci d'avance.

Dernière modification par dobi19 (19-02-2011 09:44:40)

Hors ligne

#2 19-02-2011 11:01:47

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Récupérer de nouveaux champ dans l'e-mail

Tu ne peux rajouter de paramètres dans la fonction (voir documentation).
Il faut donc modifier ta variable $message pour y insérer les informations que tu souhaites.

En concaténant à la fin ou au début par exemple :

$message = $message . $ville;

Hors ligne

#3 19-02-2011 14:41:13

dobi19
Membre
Inscription : 23-07-2009
Messages : 35

Re : Récupérer de nouveaux champ dans l'e-mail

Merci, beaucoup!

impeccable, j'ai juste un dernier souci, c'est quand je valide le formulaire et que je tombe sur
le récapitulatif, le footer disparait.

la partie du code concerné:

<?php
    if( $mailSent === true ) // si le message a bien été envoyé, on affiche le récapitulatif
    {
?>
        <p id="success">Votre message a bien été envoyé.</p>
        <p><strong>Courriel pour la réponse :</strong><br /><?php echo( $from ); ?></p>
        <p><strong>Objet :</strong><br /><?php echo( $object ); ?></p>
        <p><strong>Message :</strong><br /><?php echo( nl2br( htmlspecialchars( $message ) ) ); ?></p>

Si vous aviez peu être une idée d'où cela provient , merci encore

Hors ligne

#4 19-02-2011 15:09:27

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Récupérer de nouveaux champ dans l'e-mail

L'email est-il bien envoyé ? Pas de message d'erreur ?
Car à priori cela viendrait de la variable $mailSent qui n'a pas la valeur true, donc de la fonction mail() qui n'a pas fonctionné.
Regardes le code source HTML généré par le navigateur, il est possible qu'à cause de certaines balises HTML le message d'erreur ne soit pas visible mais bien présent.

Dernière modification par xTG (19-02-2011 15:10:06)

Hors ligne

#5 20-02-2011 08:53:28

dobi19
Membre
Inscription : 23-07-2009
Messages : 35

Re : Récupérer de nouveaux champ dans l'e-mail

Bonjour,

merci, l'e-mail était bien envoyé, en regardant le code source j'ai pu voir qu'après le récapitulatif,
aucune fermeture des div et l'include du footer n'apparaissaient.

Du coup j'ai rajouté ce qui manqué à la suite et l'affichage est ok

Encore une dernière petite question, je recevais le mail avec les accents sous formes de symboles
du coup j'ai supprimé de la récupération de $object:

FILTER_FLAG_ENCODE_HIGH | FILTER_FLAG_ENCODE_LOW

et rajouté à l'envoie du mail:

utf8_decode($object), utf8_decode($message),

ce qui marche impeccable.

Mais par contre j'aimerais savoir comment faire pour rajouter du gras catégorie dans:

        $message ='

         '.$nom.' '.$prenom.' vous écrit via votre formulaire.

         Voici les informations laissés à votre attention:
         
         Société: '.$object.'

         Nom: '.$nom.'
         
         Prénom: '.$prenom.'
         
         Téléphone: '.$telephone.'
         
         E-mail: '.$from.'
         
         Adresse: '.$adresse.'
         
         CP / Ville: '.$cp.' / '.$ville.'

         Numéro de téléphone:'.$telephone.'

         Message:'.$texte.'        

         ';

Exemple:

<b> Nom:</b> '.$nom.'

Car ça m'affiche carrément <b> dans le mail et comme c'est la première fois que j'essaie
d'inclure du html dans le mail d'un formulaire, ce serai sympas d'en savoir un peu plus.

Merci!

Dernière modification par dobi19 (20-02-2011 08:54:53)

Hors ligne

#6 20-02-2011 09:34:55

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : Récupérer de nouveaux champ dans l'e-mail

Salut,

dans l’entête du message : "Content-type: text/html; "

a++

Hors ligne

#7 23-02-2011 23:13:49

dobi19
Membre
Inscription : 23-07-2009
Messages : 35

Re : Récupérer de nouveaux champ dans l'e-mail

bonsoir,

merci à tous les deux, ça marche impeccable smile

Bonne soirée

Hors ligne

Pied de page des forums