Formulaire expédié en Pièce jointe

Signaler
Messages postés
48
Date d'inscription
mercredi 9 juillet 2003
Statut
Membre
Dernière intervention
28 juillet 2011
-
Messages postés
48
Date d'inscription
mercredi 9 juillet 2003
Statut
Membre
Dernière intervention
28 juillet 2011
-
Bonjour,

Je souhaiterais integrer un formulaire ( je sais ça existe déja...laissez moi finir ) dans mon site qui me permette de collecter des informations et recevoir le formulaire sous forme de pièce jointe et non sous forme de texte empilé au Km dans le mail.

Les infos que je souhaite collecter :

Nom:
Prénom:                      Tous ces champs doivent etre renseignés
Email:
Message:

Je me doute que pour qu'elqu'un qui maitrise c'est simple, mais moi je cherche depuis 3h et je ne trouve que des formulaires qui me retournent du texte

En espérant qu'une âme charitable m'aidera

@+

7 réponses

Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5
Hello,

ce n'est pas sur ce site que tu as dû chercher, sinon je pense que tu aurais vu qu'il y a des sources qui gèrent les envois de pièces jointes :)

Ceci dit, il faudra probablement zipper ton fichier texte avant de l'envoyer en pièce jointe, ou à la limite en faire du html, parce que les fichiers joints au format texte (brut) apparaissent souvent dans le corps du message selon les clients de messagerie.
Messages postés
48
Date d'inscription
mercredi 9 juillet 2003
Statut
Membre
Dernière intervention
28 juillet 2011

Bonsoir Evangun,

Merci de t'interresser à mon problème ;-)

Si si j'ai bien effectué des recherches sur ce site et effectivement j'ai vu les sources que tu cites mais cela ne correspond pas à ce que je souhaite faire  car je ne souhaite pas annexer un document supplémentaire en pièce jointe mais recevoir en pièce jointe le formulaire qu'a complété en ligne la personne.....j'sais pas si je suis tres clair moi!!  
Bref aujourd'hui quand les personnes complètent mon formulaire je reçois par mail:

Nom = durex
Prénom = albert

Email = toto@free.fr
Demande de renseignements = bonsoir, C'est un test du module PHP @tchao

Ce qui n'est pas trés agréable à lire

Je préfèrerais recevoir une "photo" de l'ecran complété en piece jointe du mail sous un format quelquonque page Html, ou autres...

Vous remerciant par avance, car vous pouvez constater que cela m'embrouille grave les neurones!

Newbeesement votre
Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5
J'ai très bien compris ce que tu veux, t'inquiètes :).

Les sources gèrent l'envoi de pièce jointe. Tu veux envoyer une pièce jointe. Conclusion: tu vas utiliser ces sources.
Jusque là, ça parait logique ! Maintenant demande-toi plutôt comment tu vas mettre le formulaire dans la pièce jointe.

Après faut voir comment faire selon la source, je n'ai pas de réponse précise à te donner. Il y a juste besoin de voir comment elle prend les données, et se débrouiller pour qu'elle prenne ton formulaire.
Messages postés
48
Date d'inscription
mercredi 9 juillet 2003
Statut
Membre
Dernière intervention
28 juillet 2011

Merci pour ta pédagogie

Bon par contre je sent que cela ne va pas être simple  

Pour que je gagne du temps et ne réalise pas 4000 essais, avez vous un script précis à me conseiller ( le plus simple, le plus complet...) 

Newbeement votre
Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5
Perso jamais utilisé d'envoi de pièce jointe encore, mais essaie de trouver une source bien notée, pas de raison particulière pour qu'elle ne marche pas vu qu'elle a été faite pour ça.
Si tu galères trop à adapter une source, contente-toi de créer un fichier à partir de ton formulaire et là tu pourras l'envoyer sans autre forme de procès
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Hello,

tout est une question de header...il te faut scinder ton message en plusieurs parties (donc multipart...), en délimitant correctement chaque partie avec un hash et en ajoutant les headers correspondant à chaque partie (html, text, puis csv pour le fichier joint, par exemple). Sincèrement, c'est assez pénible à écrire...je te conseille aussi d'utiliser un code existant, ça t'évitera bien des ennuis. Sauf si tu tiens à avoir ton propre bout de code allégé afin de te passer de toutes les frioritures inutiles qu'il y aura évidemment dans un code dédié.
Il existe beaucoup d'exemples à ce propos, que ce soit ici ou sur le net en général, tu devrais trouver facilement.
Je n'ai pas d'exemple sur moi, désolé.
Messages postés
48
Date d'inscription
mercredi 9 juillet 2003
Statut
Membre
Dernière intervention
28 juillet 2011

Merci malalam mais tout ces Headers...me font mal à la Head  et compte tenu de mon niveau Bac -15 en PHP j'ai du mal à te suivre

J'ai néanmoins essayé sur vos conseils, EXmail 1.1 (Script réalisé par Steuf ) qui effectivement offre dans le formulaire la possibilité de joindre un PJ et transmet le résultat de la saisie sous fourme d'un Email.

J'ai reussi à le mettre en ligne du premier coup  si, si , mais je suis quand même un peu déçu par le résultat, car si je retire le + de l'option de pouvoir proposer à la personne de joindre une PJ, le contenu du formulaire est transmis de la même façon que le bon vieux code Html que j'utilisais avant

Comme vous avez l'air de maitriser, je vous glisse le code ci-aprés, car peut être vous trouverez une astuce

<?php
    $decompurl = pathinfo( $_SERVER['REQUEST_URI'] );
    $baseurl = $decompurl['basename'];
 
if ( substr_count( $baseurl, '?' ) === 0 ) {
?>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Formulaire de contact</title>


<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">


<meta name="revisit-after" content="1">
<meta name="description" content="EXmail 1.1">
<meta name="keywords" content="exmail">
<meta name="robots" content="ALL">
<meta name="distribution" content="Global">
<meta name="rating" content="General">
<meta name="copyright" content="Steuf">
<meta name="author" content="Steuf">




<link rel="stylesheet" type="text/css" href="contact.css">


</head>




<?php
}


if ( isset( $_POST['submit'] ) ) {


///////////////////
// CONFIGURATION //
///////////////////


$to = [mailto:'monadresse@wanadoo.fr' 'monadresse@wanadoo.fr'] ; // Mettez ici, là ou les adresses emails ( Séparées d'une virgule ) auquels le mail doit être envoyé.
$subject = 'Formulaire complété par '.$_POST['nom'];  // Mettez ici le sujet de votre mail
$format = 'html';  // Mettez ici le format de l'email, pour html mettez 'html', pour le format texte mettez 'texte'


//////////////////////////////////////
// Configuration de l'envoi du mail //
//////////////////////////////////////


$foncmail = 'mail'; // Si votre hébergeur permet la fonction mail mettez 'mail', sinon vous pouvez utiliser smtp en mettant 'smtp'


/////////////////////////////////////////////////////////////////////////////////////
// Configuration SMTP ( Si vous n'utilisez pas SMTP ne pas configurer ces champs ) //
/////////////////////////////////////////////////////////////////////////////////////




$hostsmtp = ''; // Mettez ici l'hôte SMTP par exemple 'smtp.free.fr'
$portsmtp = '25'; // S'il faut utiliser un autre port que le port 25 spécifiez le ici
$authsmtp = true; // Si le serveur demande une authentification laissez true, s'il n'y a pas besoin d'authentification mettez false et
                  // ignorez les champs suivant
$usersmtp = ''; // Mettez ici le login d'accés au serveur SMTP. Par exemple :  'toto'
$passmtp = ''; // Mettez ici votre mot de passe d'accés au serveur SMTP. Par exemple : 'Mon_mot_de_pass'




// Dans body vous avez le corps du mail, ici nous mettons les variables du champs commentaire $comment,
// vous pouvez mettre bien entendu plusieurs variables avec du texte au format html ou texte selon votre choix.
// Attention ! Comme vous le voyez dans l'exemple, le texte doit être entre des Appostrophes , alors que les Variable
// venant du formulaire doivent être en dehors et de la forme .$_POST['nom']. ( Ne pas oublier les points )
// Attention ! Si vous mettez une appostrophe dans le texte elle doit être précédée de \ Exemple :
// Si je veus écrire : J'y vais , il faut mettre : J\'y vais.


$body = '<html>
            <head>
          <title>EXmail 1.1</title>
      </head>
     
                 Voici les commentaires de '.$_POST['nom'].' :

              '.$_POST['comment'].'

           Le script fonctionne ;-)

     
  </html>';


///////////////////////////////////////////////
//        FIN DE LA CONFIGURATION            //
///////////////////////////////////////////////


function CheckEmail( $email )
{
  return ereg('^[-!#$%&\'*+\\./0-9 =?A-Z^_`a-z{|}~]+'.'@'.'[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.'.'[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$',$email );


}


///////////////////
// CONFIGURATION //
///////////////////


// Si l'adresse email n'est pas valide, on met un message d'erreur


if( !CheckEmail( $_POST['email'] ) )
{
 $error[] = 'Votre adresse Email n\'est pas valide !

';
}


// On vérifie que les champs obligatoires sont remplis, s'il n'est pas rempli on dirige vers un message d'erreur, pour vérifier d'autres champs
// Du formulaire que vous allez créer vous n'avez qu'à recopier les deux lignes si dessous et de remplacer la variable $_POST['nom'] par celle
// de la partie du formulaire que vous voulez rendre obligatoire. Ainsi que le message en html que vous voulez mettre en cas d'erreur.


if ( empty( $_POST['nom'] ) )
{
 $error[] = 'Vous n\'avez pas mis votre Nom/Pseudo !

';
}


///////////////////////
// FIN CONFIGURATION //
///////////////////////


if ( isset( $_FILES['upload_localfile']['tmp_name'] ) and is_uploaded_file( $_FILES['upload_localfile']['tmp_name'] ) ) {


 $destination = dirname(__FILE__).'/upload/'.$_FILES['upload_localfile']['name'];
 if ( move_uploaded_file( $_FILES['upload_localfile']['tmp_name'], $destination ) ) {
 
 $uploadinfo = 'Upload Réussi

';
 
 }
}
else {


 $uploadinfo = 'Pas de fichier joint ! ';


}
 
if ( !isset( $error ) or empty ( $error ) )


{
    $reqclass = dirname(__FILE__).'/class.phpmailer.php';
 require_once ( $reqclass );
 


           $mail = new PHPmailer();  
       
            if ( $foncmail === 'mail' ) {
         $mail->IsMail();
      }
   elseif ( $foncmail === 'smtp' ) {
        $mail->IsSMTP();             
         $mail->Host = $hostsmtp;     
         $mail->Port = $portsmtp;
         $mail->SMTPAuth = $authsmtp;           
         $mail->Username = $usersmtp;   
         $mail->Password = $passmtp;
   } 
   if ( $format === 'html' ) {
               $mail->IsHTML(true);
         }
         elseif ( $format === 'texte' ) {
               $mail->IsHTML(false);
         }
   $mail->From = $_POST['email'];
         $mail->FromName = $_POST['nom'];
         $mail->AddAddress( $to );
         $mail->Subject = $subject ;
         $mail->Body = stripslashes( $body );
            if ( isset( $destination ) ){
              $mail->AddAttachment( $destination );
            }
         if(!$mail->Send()){
                echo 'Erreur fonction mail() :

';
             echo $mail->ErrorInfo;
         }
         else{ 
             echo $uploadinfo;
             echo 'Formulaire envoyé !

';
         }
 
         unset($mail);
    
}
else {
 foreach ( $error as $errormsg ) {
    echo $errormsg;
 }
    echo 'Le Formulaire n\'a pas été envoyé

         Veuillez recommencer !

';
}
if ( isset( $destination ) ){
    unlink( $destination );
}
}


if ( ( ( isset( $error ) or !empty ( $error ) ) and isset( $_POST['submit'] ) ) or  !isset( $_POST['submit'] ) )  {


/////////////////////////////////////////////////
//        Le code HTML du formulaire           //
/////////////////////////////////////////////////


?>




<form  action="<?php $_SERVER['REQUEST_URI'] ?>" method="post" enctype="multipart/form-data">
      Votre adresse email* :
        
  

     
   Votre Nom/Prénom * :
    
     

  
   Message :

  
         <textarea name="comment" cols="50" rows="10" class="fondformulaire"></textarea>
  

  
         Dans l'attente de la réception de l'original par courrier, vous pouvez
   joindre à ce formulaire une copie du contrat dument complété et
   signé

  
   Fichier joint ( 500Ko maximum) :
        
        
  

  
     
      
         
  

  
</form>


 


   *Champs obligatoires
   EXmail 1.1 r&eacute;alis&eacute; par [Steuf

  


<?php


/////////////////////////////////////////////////
//       Fin du code HTML du formulaire        //
/////////////////////////////////////////////////


}
if ( substr_count( $baseurl, '?' ) === 0 )  {
?>



</html>


<?php
}
?>

C'est clair non

Merci, bcp