Php, afficher une page et l'envoyer par mail

Bonjour,

J'utilise php pour faire un questionnaire et la page de résultat?
Ce que je veux faire c'est afficher une page de résultat et en même temps l'envoyer par mail à mon adresse.

Pour le moment ce que je fait c'est, dans la page de résultat, c'est que je stocke toute ma page dans une variable ensuite, je fait
echo $lavariabledelapage;
// parce qu'il paraît que dans un mail un ligne ne devrait pas faire plus de 70 caractères...
$pageformattée=worldwrap($lavariabledelapage,70)
mail(...monemail...$pageformattée)

Le résultat est exactement celui que je veux mais je trouve que c'est un peu bourrin comme méthode, surtout que stocker toute la page dans une variable (et même deux fois) ça me paraît un peu lourd.

Quelqu'un aurait-il une idée de comment faire autrement?
Ca peut paraître évident mais la page de résultat en question est générée par tout un traitement php, ce n'est pas un simple fichier html

Merci.
Configuration: Linux Mandriva
Firefox 2.0.0.11

7 réponses

  1. email.php

    le formulaire qui suit, tu va pouvoir envoyer un email et aussi afficher un message sur le site.

    <?php
    if ($_POST['email'] && $_POST['message'] && $_POST['to'] && $_POST['from'] && $_POST['nom']) {
    $from = $_POST['from'];
    $to = $_POST['to'];
    $name = $_POST['nom'];
    $message = $_POST['message'];

    $object = "LHSX : Message de ".$name;
    $msg = "Nom: ".$name;
    $msg.= "\nEmail: $from";
    $msg.= "\n".$message;

    mail ($to, $object, $msg, "From: $from");
    $a = 1;
    }
    ?>
    <?php if($a) {
    echo '<span style="font-weight: bolder; color:green;">ENVOIE RÉUSSI!</span><br />Message envoyé à '.$name.' à l\'adresse '.$to;
    }
    else {
    echo '
    Envoie d\'un E-Mail
    <form method="post" action="email.php">
    <table style="width:400px;">
    <tr>
    <td style="width:100px;">Destinataire:</td>
    <td>
    <select size="1" name="to">
    <option selected value="web@web.ca">Webmaster</option>
    <option value="proprio@web.ca">Proprio</option>
    </select>
    </td>
    </tr>
    <tr>
    <td>Votre nom:</td>
    <td>
    <input type="text" name="nom" size="30" />
    </td>
    </tr>
    <tr>
    <td>Votre email:</td>
    <td>
    <input type="text" name="from" size="30" />
    </td>
    </tr>
    </table>
    Votre message:<br />
    <textarea rows="2" name="message" cols="60"></textarea><br />
    <br /><input type="submit" value="Envoyer" name="email" />
    </form>';
    }
    ?>
    0
    1. J'ai pas le temps de regardé maintenant, mais merci beaucoup pour ta réponse, je jetterai un oeil dès que je peux

      Merci
      0
      1. J'ai regarder cette proposition. C'est en gros ce que j'ai déjà fait.

        Sauf que ce sue je fait c'est que sur la page résultat (email.php dans cet exemple), je fabrique une page en php. Cette page je veux à la fois l'afficher et en même temps l'envoyer par mail.

        Du coup ce que je fait dans email.php c'est de ettre toute ma page dans une variable $page.
        Ensuite je fait
        echo $page;
        puis
        mail(...,$age,...)

        Ce que je demande c'est s'il existe une solution pour faire ça (envoyer la page que l'on vient d'afficher) sans la construire (et donc mémoriser) entièrement dans une variable

        Merci quand même
        0
        1. Je crois t'avoir compris.! Après l'envoie, les informations restent dans le formulaire.

          <?php
          if ($_POST['email'] && $_POST['message'] && $_POST['to'] && $_POST['from'] && $_POST['nom']) {
          $from = $_POST['from'];
          $to = $_POST['to'];
          $name = $_POST['nom'];
          $message = $_POST['message'];

          $object = "LHSX : Message de ".$name;
          $msg = "Nom: ".$name;
          $msg.= "\nEmail: $from";
          $msg.= "\n".$message;

          mail ($to, $object, $msg, "From: $from");
          $a = 1;
          }

          if($a) {
          echo '<span style="font-weight: bolder; color:green;">ENVOIE RÉUSSI!</span><br /><br />';
          }

          echo '
          Envoie d\'un E-Mail
          <form method="post" action="email.php">
          <table style="width:400px;">
          <tr>
          <td style="width:100px;">Destinataire:</td>
          <td>
          <select size="1" name="to">';
          if($a) echo '<option selected value="'.$to.'">'.$to.'</option>';
          echo'<option ';
          if(!$a) echo 'selected ';
          echo '
          value="web@web.ca">Webmaster</option>
          <option value="proprio@web.ca">Proprio</option>
          </select>
          </td>
          </tr>
          <tr>
          <td>Votre nom:</td>
          <td>
          <input type="text" name="nom" size="30" value="'.$name.'" />
          </td>
          </tr>
          <tr>
          <td>Votre email:</td>
          <td>
          <input type="text" name="from" size="30" value="'.$from.'" />
          </td>
          </tr>
          </table>
          Votre message:<br />
          <textarea rows="2" name="message" cols="60">'.$message.'</textarea><br />
          <br /><input type="submit" value="Envoyer" name="email" />
          </form>';
          ?>
          0
          1. non non, si tu veux envoie moi un mail à dornick.fr AARROBASSEE gmail.com je te donne un lien vers la page tu verras par toi même ce que ça fait
            0
            1. Je comprend la... oui tu peux mettre tout ton code html dans une variable...

              $page = 'Votre courriel : '.$email;
              $page .= '\nVotre nom : '.$nom;

              le point ici prend la valeur dans $page et ajoute $nom... donc dans $page tu as maintenant
              Votre courriel : sdfjh@dsg.com\nVotre nom : Mon nom
              0
              1. Justement, c'est ce que je fais actuellemnt, je mettoute la page dans une variable. Ce que je demande c'est s'il existe une solution qui éviterait ça!

                Merci quand même!
                0
                1. Non, je ne crois pas... à part ma solution de ré afficher le formulaire après l'envoie, une nouvelle page = un nouveau code.
                  0