[php-html] envoi formulaire vers email

Bonjour,

alors voila, on m'a deja beaucoup aidé, voire ici : http://www.commentcamarche.net/forum/affich 6673273 php html envoi formulaire vers bdd wamp

mais maintenant, je voudrais pouvoir envoyer le meme contenu de mes formulaires ver une adresse email, bien sur il y a la fonction mailto, mais elle nécessit"e de passer par MS outlock ce que je ne veux pas, ça doit être instentané .... direct, pas d'intermédiaires si ce n'est des pages php ^^

donc si un de vous a une idée, ce serais top :P
Configuration: Windows Vista
Firefox 3.0

10 réponses

Résumé de la discussion

Le problème discuté consiste à envoyer le contenu d'un formulaire HTML vers une adresse email en utilisant PHP, sans passer par mailto ni Outlook et en restant instantané côté serveur. Une solution proposée exploite la fonction mail() de PHP en construisant le message à partir des données POST et en définissant les en-têtes, notamment To et From, pour une transmission. Les échanges portent aussi sur le code et les tests locaux, avec des questions sur l'expéditeur du mail et la gestion de liens et de chemins lors du déploiement en réseau local. En cas de test sur un serveur local, une nuance utile est de configurer un serveur SMTP ou un relais Mail pour que les messages sortants soient acceptés.

Bobot (l’IA à votre service)
  1. personne n'a d'idée ?
    1. lol re ^^ t'as pas dormi ? xD
    2. @Brachiorsi j'ai dormi, je me suis coucher entre 6h30 et 7h, et je me suis reveillé de force (ma mere a hurler pour une question de bac que je lui avait pas rendu hier soir loool) vers 11h ... ce fut une longue nuit de sommeil quoi lol
  2. question con, mais vu que tu as suivi la première partie de mon soucis lol, est il possible que dans ma page validationdemande.php j'inseère cette requete ?

    pour commencer je vais faire une page séparée, mais j'aimerais bien que tout soit dans la meme, sinon ça va etre la misère pour lui dire d'envoyer en meme temps sur l'email ET la bdd ...

    sachant que sur validation demande j'ai deja 8 boutons lol, et que pour 3 d'entre eux cela nécéssite de rajouter une opération (email) a celle deja présente (bdd) sans rajouter d'autres boutons ..

    je sais pas si je m'explique clairement ?
    1. euh la non c'pas tres clr xD ^^

      euh en fait tu envoies quoi par mail ?
    2. @Brachior
      <?php
      $TO = "mon adresse email";
      
      $h  = "From: " . $TO;
      
      $message = "Bonjour, un nouveau bénévole désire rentrer en contact avec l'association afin d'apporter son aide.<br />
      Il s'agit de $nom $prenom, joignable au $tel ou $email ainsi qu'à l'adresse suivante :<br />
      $nom $prenom<br />
      $adresse<br />
      Ces jours de disponibilité pour aider les élèves sont les suivants : $dispo1, $dispo2, $dispo3, $dispo4, $dispo5, $dispo6<br />
      Ce bénévole a été ajouter à la base de donnée.";
      
      while (list($key, $val) = each($HTTP_POST_VARS)) {
        $message .= "$key : $val\n";
      }
      
      mail($TO, $subject, $message, $h);
      
      header("Location: Location: http://localhost/progetgsi/page-acceuil.html");
      
      ?>
    3. @metra83oui j'pense que si tu gerbe ca a la suite ca devrait l'faire Oo
      t'as essayé ?

      c'que j'me demande c'est ... qui sera l'expediteur du mail ? Oo
    4. @Brachiorl'expediteur je sais pas du tout lol, alors ça marche sans marcher :
      le + :
      -ça envoi toujours a la bdd mais sans afficher le petit message ... pas de soucis je vais faire une page de remerciement après donc le petit message ne servira plus a rien !

      les - :
      -obligé de supprimer les boutons specifiques aux autres formulaires donc les boutons 7 et 8 (j'ai pas fait le 8 donc que le 7 lol) pour eviter le message d'erreur
      -pas de message d'erreur dans ce cas .. mais pas de mail envoyé ...

      je suis quasi sur que c'est parce que le "site" est en reseau local et l'adresse sur internet j'ai bon ??

      donc est il possible de créer une adresse "email" par wamp serveur ?
    5. @metra83euh non j'pense pas que ca joue oO
      j'suis pas calé en mail xD
      fait voir le code ? :)
  3. je comprend pas l'interet du while, meme si il en a très certainement un !

    sinon ça me donne ça :
    Warning: Variable passed to each() is not an array or object in C:\gsiproget\validationdemande.php on line 66
    
    Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\gsiproget\validationdemande.php on line 69


    qui correspondent à :

    		while (list($key, $val) = each($HTTP_POST_VARS)) {
    			$message .= "$key : $val\n";}
    			
    		mail($TO, $subject, $message, $h);


    je vois pas pourquoi :( (en meme temps je pige pas le while donc bon (la je me perd de plus en plus lol
    1. bah suppr le while xD lol ^^
      l'informatique c'est fait pr tester xD
  4. en supprimant le while, (j'lai fait après avoir poster pour voir)

    Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\gsiproget\validationdemande.php on line 67


    qui du coup ce rapporte a

    		mail($TO, $subject, $message, $h);


    pour n'importe quel bouton

    et

    Parse error: syntax error, unexpected T_VARIABLE in C:\gsiproget\validationdemande.php on line 60


    qui correspond a la variable message pour le bouton envoyer ...

    je crois que je vais laisser tomber, ça m'enerve vraiment la ... lol

    je trouve rien qui corresponde ...
    1. si personne n'a ne serais ce qu'un idée, je lâche le bout, ou alors j'y retournerais plus tard .. la ça me soule grave !

      a moins que je n'ai une super idée en chemin ... j'en ai mare des codes erreurs la ^^

      je fini mon codage complet "de base" deja, après je tente une redirection de l'ordre de :

      <meta http-equiv="refresh" content="10;url=http://localhost/progetgsi/page-acceuil.html" />


      ou de :

      function redirection(page)
      {window.location=page;}
      setTimeout('redirection("http://localhost/progetgsi/page-acceuil.html")',10000);

      selon laquelle veut bien marcher en php ...
      et si tout ça est ok, la je me pencherais sur la fonction email, car je perd plus du temps qu'autre chose !
      1. re ^^ j'etais parti manger ^^ j'regarde le code ^^
      2. @Brachiorah, tu m'avais pas abandonné ?

        lol, pas de soucis, si ça te dérange pas trop ;) (j'ai a peine l'impression de te monopoliser depuis hier soir :rolling-eyes:
      3. @metra83bon .. apres 8tests ( nb de msg envoyés a moi meme sur mon adresse mail ^^
        voila le code qui fct ;)
        ps : tu peux retirer la partie que j'ai mis en com ;)
        if(@ $_POST['bouton6']=="Envoyer"){
          $nom=$_POST['nombenevole'];
          $prenom=$_POST['prenombenevole'];
          $adresse=$_POST['adressebenevole'];
          $tel=$_POST['telephonebenevole'];
          $email=$_POST['e-mailbenevole'];
          $dispo1=$_POST['disponibilite1'];
          $dispo2=$_POST['disponibilite2'];
          $dispo3=$_POST['disponibilite3'];
          $dispo4=$_POST['disponibilite4'];
          $dispo5=$_POST['disponibilite5'];
          $dispo6=$_POST['disponibilite6'];
            //partie inutile a cause du header a la fin ^^
          //echo "<p>Nom : $nom</p>";
          //echo "<p>Prénom : $prenom</p>";
          //echo "<p>Adresse : $adresse</p>";
          //echo "<p>Téléphone : $tel</p>";
          //echo "<p>E-mail : $email</p>";
          //echo "<p>Vous avez été enregistré en tant que bénévole </p>";
          
          $db=mysql_connect ("localhost", "root", "") or die("Erreur de connexion à Mysql ".mysql_error);
          mysql_select_db("lerocher", $db) or die("Erreur de connexion à la base lerocher");
          $sql="INSERT INTO table_benevole VALUES('$nom', '$prenom', '$adresse', '$tel', '$email', '$dispo1', '$dispo2', '$dispo3', '$dispo4', '$dispo5', '$dispo6', '')";
          mysql_query($sql);
          
          $TO = "metra83@hotmail.fr";
          $h  = "From: ".$TO;
        
          $msg = "Bonjour,\n
            un nouveau bénévole désire rentrer en contact\n
        	avec l'association afin d'apporter son aide.\n
            Il s'agit de $nom $prenom,\n
        	joignable au $tel ou $email ainsi qu'à l'adresse suivante :\n
            $nom $prenom\n
            $adresse\n
            Ses jours de disponibilité pour aider les élèves sont les suivants :\n
        	$dispo1, $dispo2, $dispo3, $dispo4, $dispo5, $dispo6\n
            Ce bénévole a été ajouter à la base de donnée.";
        
          $subject="Un nouveau bénévole";
        
          mail($TO, $subject, $msg, $h);
        
          header("Location: page-acceuil.html");}
      4. @Brachioret pr le while .. s'il y avait un prob c''est prck en faite il disais :
        while (list($key, $val) = each($HTTP_POST_VARS)) {
            $message .= "$key : $val\n";}
        tant qu'il existe des variables post
        alor on enregistre la clé ds $key et la valeur ds $val
        puis on concatene ds $message avec l'ancienne valeur de $message

        mais comme t'as changé les post c'etait plu utile d'une part .. puis de 2 $message etait deja defini ^^
      5. @Brachiorba j'ai carrement pas de chance .. car moi ça marche pas :(

        ça me met :

        Parse error: syntax error, unexpected $end in C:\gsiproget\validationdemande.php on line 39


        soit :

        ?>


        suis je maudit ou très bête ?
    2. bon j'arrive a rien, ça m'enerve lol, j'ai filezilla mais jarrive pas a aller plus loin .. je prefere le html lol
      1. @Brachiorok, je vois ça, et après si c'est ok, je m'occupe du serveur mail vu que je dois pouvoir tourner en reseau local ;)

        en, tout cas merci, entre hier soir et aujourd'hui tu m'arrange bien :P
    3. http://metra83.free.fr/

      par contre tout ne marche pas .. rapport a mes liens je pense .. ??
      1. semblerais que wamp permette de prendre en charge un mail local ...
        1. bon ... ça ne marche toujours pas ... on oubli la possibilité c'est mieu ... j'ai suffisement perdiu de temps et fais perdre de temps comme ça ...
          1. lol xD ^^
            bah de tte facon envoyer un mail en local c'est inutile xD
          2. @Brachiorexact, du coup j'ai (encore) fait un nouveau post ...