Partage
  • Partager sur Facebook
  • Partager sur Twitter

PHP et la fonction mail()

Sujet résolu
    10 juillet 2006 à 18:30:11

    Bonsoir à tous !
    J'ai décidé de mettre sur mon site web un petit formulaire (sur la page contact.php) permettant au visiteur de faire queslques remarques sur mon site web en les envoyant dans ma boîte mail directement.
    J'utilise pour cela la fonction mail() de PHP, et modifie le fichier de configuration php.ini en remplaçant localhost par smtp.wanadoo.fr pour pouvoir utiliser cette fonction en "local".

    Alors voici mes codes :

    contact.php

    <form action="mail_envoi.php" method="post" />
    <p>N'hésitez pas à utiliser le formulaire ci-contre pour nous faire part de vos remarques</p>
    <table>
            <tr>
                    <td class="intitule">Nom:<sup>*</sup></td>
                    <td class="champ"> <input type="text" name="nom" size="32"> <br /></td>
            </tr>

            <tr>
                    <td class="intitule">Entreprise:</td>
                    <td class="champ"> <input type="text" name="entreprise" size="32"> <br /></td>
            </tr>
           
            <tr>
                    <td class="intitule">Mail:<sup>*</sup></td>
                    <td class="champ"> <input type="text" name="mail" size="32"> <br /><td>
            </tr>
           
            <tr>
                    <td class="intitule">Remarque:<sup>*</sup></td>
                    <td class="champ"> <textarea name="message" cols="45" rows="6"></textarea> <br /></td>
            </tr>
    </table>
    <p><em>(Les champs marqués d'un * doivent être obligatoirement remplis)</em></p>
    <input type="submit" value="Envoyer" />
    </form>


    mail_envoi.php

    <?php
            if(isset($_POST['nom']) AND isset($_POST['mail']) AND isset($_POST['message']))
            {
            $subject = $_POST['nom'];
           
            $message = $_POST['message'];
            $message = wordwrap($message, 70);
           
            $adresse = $_GET['mail'];
            $headers = 'From:'.$adresse.'';
           
            mail('olivier.rousseau44@wanadoo.fr', $subject, $message, $headers);
           
            echo 'Votre mail a bien été envoyé';
            }
            else
            {
            echo 'Vous avez omis de remplir un champ, votre mail n\'a donc pu être correctement acheminé vers votre destinataire.';
            }
            ?>     
     


    Alors voilà, quand je remplis les champs je reçois bien un mail avec dedans le nom du visiteur en objet, et le message. Seulement voilà, le nom de l'expediteur ne s'affiche pas. Je suis prêt à parier que j'ai mal écrit ma variable $headers. :euh: Comment faire ?

    Autrement voilà, pourriez-vous me donner des petits conseils concernant ce formulaire afin que je puisse l'améliorer, que je puisse rajouter dans mon code PHP des choses que j'aurai omises ? :)

    Merci beaucoup et mercie au SdZ grâce à qui j'ai pu apprendre ces trois langages ! Je sais, j'ai encore du boulot ! :-°
    • Partager sur Facebook
    • Partager sur Twitter
      10 juillet 2006 à 19:34:20

      faut utiliser la forme "nom <adresse@email>" :) voila tout ;)
      • Partager sur Facebook
      • Partager sur Twitter
        10 juillet 2006 à 20:01:36

        d'accord mais comment je fais ceci dans ma variable headers avec le From, j'ai du mal avec la syntaxe
        • Partager sur Facebook
        • Partager sur Twitter
          10 juillet 2006 à 20:03:46

          $adresse = $_GET['mail'];
          $nom = $_GET['nom'];
          $headers = 'From:'.$nom.' <'.$adresse.'>';
          • Partager sur Facebook
          • Partager sur Twitter
            10 juillet 2006 à 20:24:10

            Très bien, cela fonctionne !
            Enfin en modifiant GET par POST ;)

            Derniers petits problèmes :
            * Le nom de l'entreprise est facultatif. Si le visiteur ne renseigne pas le champ, ce n'est pas grave, on peut tout de même envoyé le mail. Mais s'il le renseigne, j'aimerai que le nom de l'entreprise apparaisse à la fin du message sous la forme : "L'utilisateur a spécifié le nom de son entreprise qui est $entreprise".
            Comment faire ?

            * Je me suis rendu compte que lorsque les champs obligatoire n'étaient pas renseignés, le mail était tout de même envoyé, pourtant, d'après mon code, c'est le "else" qui devrait prendre le relais, et donc, ce qui est dit dans le "if" ne devrait pas être exécuté !
            Le problème vient probablement de mon code, mais je ne vois pas d'où ?

            Merci beaucoup de l'aide que vous m'apporterez !
            • Partager sur Facebook
            • Partager sur Twitter
              10 juillet 2006 à 20:42:20

              if(empty($_POST['nom']) OR empty($_POST['mail']) OR empty($_POST['message'])) {
                  echo "Désolé. Un ou plusieurs champs obligatoires n'ont pas été remplies";
              }
              else {
                  $subject = $_POST['nom'];
                  $message = $_POST['message'];
                  $message = wordwrap($message, 70);
                  $entreprise = $_POST['$entreprise'];

                  if (!empty($entreprise)) {
                      $message .= "\n\nL'utilisateur a spécifié le nom de ";
                      $message .= "son entreprise qui est: ".$entreprise;
                  }
                  $adresse = $_POST['mail'];
                  $nom = $_POST['nom'];
                  $headers = 'From:'.$nom.' <'.$adresse.'>';
                     
                  mail('olivier.rousseau44@wanadoo.fr', $subject, $message, $headers);
                     
                  echo 'Votre mail a bien été envoyé';
              }
              ?> 
              • Partager sur Facebook
              • Partager sur Twitter
                10 juillet 2006 à 22:07:15

                Merci beaucoup, cela fonctionne très bien :D
                • Partager sur Facebook
                • Partager sur Twitter

                PHP et la fonction mail()

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown