01net    Web


Actuellement en ligne : 863 Utilisateurs dont 25 dans Programmation et développement >S'inscrire      >S'identifier      >Recherche      >Aide  
modéré par A.Ouloube, Beno@  
01net > Forum de 01net > Programmation et développement > PHP
> pièce jointe dans un formulaire avec réception par mail
Passionné(e) d'internet, de logiciels, de forums ? 01net recrute...
Auteur
Message
 
<     1       >
didierl47
  
   
      ?   @     Posté le 21/05/2008 16:22:58  
Voter pour ce message
Bonjour à tous, je suis nouveau sur ce forum et je débute complétement en php.
Je souhaite créer un formulaire en php avec la possibilité d'insérer une pièce jointe. Je voudrais récupérer l'ensemble des champs du formulaire dans le corps d'un mail, avec la pièce jointe, comme son nom l'indique, en pièce jointe dans un mail. Pour l'instant, j'arrives à récupérer l'ensemble des champs dans le corps d'un mail, y compris le nom temporaire, attribué par le serveur, de mon fichier joint. Par contre cela fait 1,5 jour que j'essaie de récupérer la pièce jointe mais jusqu'ici je n'y suis pas parvenu. :o
Voici mon code, qui me permet de récupérer, aussi, l'ensemble des champs dans mon mail:
<?php
if (isset($_POST['envoie']))
{
//Pour afficher le Nom
$message = "Nom : ";
$message .= $_POST['nom'];
//Pour afficher le prénom
$message .= "\nPrenom : ";
$message .= $_POST['prenom'];
//Pour afficher l'adresse
$message .= "\nAdresse : ";
$message .= $_POST['adresse'];
//Pour afficher le Code Postal
$message .= "\nCode Postal : ";
$message .= $_POST['cp'];
//Pour afficher la ville
$message .= "\nVille : ";
$message .= $_POST['ville'];
//Pour afficher le Téléphone
$message .= "\nTelephone : ";
$message .= $_POST['tel'];
//Pour afficher l'email
$message .= "\nEmail : ";
$message .= $_POST['email'];
//Pour afficher le type d'activité
$message .= "\nactivité : ";
$message .= $_POST['type'];
//Pour afficher le type de contact souhaité
$message .= "\nContact : ";
$message .= $_POST['contact'];
//Pour afficher le descriptif de l'activité $message .= "\nDescriptif : ";
$message .= $_POST['descriptif'];
//Pour insérer la pièce jointe
$file .= "\nFichier : ";
$file .= $_FILES["fichier"];
$file .= $_FILES["fichier"]['tmp_name'];
print_r($_FILES["fichier"]) ;
//$message .= $_POST["MAX_FILE_SIZE"];
//$message .=$_POST["$fichier"];
//Por récupérer la pièce jointe
//$message .= "\nFichier : ";

$ret = mail("monmail@mondomaine.com", "sujet", $message, $file);
if ($ret === true)

echo "Votre demande a bien été prise en compte.
else
echo "Tapez correctement les champs, s'il vous plaît";
}
else
{
?><br>Formulaire
<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="POST" enctype="multipart/form-data">


<br>
<table width="700" border="0">
<tr>
<td width="187"><font face="Arial, Helvetica, sans-serif">Nom : </font></td>
<td width="503"><input name="nom" type="text" class="champ" size="50"/>
(*) </td>
</tr>
<tr>
<td><font face="Arial, Helvetica, sans-serif">Pr&eacute;nom : </font></td>
<td> <input name="prenom" type="text" class="champ" size="40"/>
(*) &nbsp;</td>
</tr>
<tr>
<td><font face="Arial, Helvetica, sans-serif">Adresse : </font></td>
<td><input name="adresse" type="text" class="champ" size="40" />
(*) &nbsp;</td>
</tr>
<tr>
<td><font face="Arial, Helvetica, sans-serif">Code Postal :</font> </td>
<td> <input name="cp" type="text" class="champ" id="cp" size="5" maxlength="5"/>
(*)&nbsp;</td>
</tr>
<tr>
<td><font face="Arial, Helvetica, sans-serif">Ville : </font></td>
<td><input name="ville" type="text" class="champ" id="ville" size="40"/>
(*) </td>
</tr>
<tr>
<td><font face="Arial, Helvetica, sans-serif">T&eacute;l&eacute;phone :</font> </td>
<td><input name="tel" type="text" class="champ" size="15"/>
&nbsp;(*)</td>
</tr>
<tr>
<td><font face="Arial, Helvetica, sans-serif">Email :</font></td>
<td> <input name="email" type="text" class="champ" size="40"/>
(*) </td>
</tr>
<tr>
<td><font face="Arial, Helvetica, sans-serif">Type de prestation :</font>&nbsp;</td>
<td><select name="type" id="type" class="champ" >
<option value="Aucune </option>
<option value="activité0</option>
<option value="activité1">activité1</option>
<option value="activité2">activité2</option>
<option value="activité3">activité3</option>
<option value="activité4">activité4</option>
<option value="activité5">activité5</option>
<option value="activité6">activité6</option>
</select>
(*) </td>
</tr>
<tr>
<td><font face="Arial, Helvetica, sans-serif">Vous souhaitez être contact&eacute; :</font>&nbsp;</td>
<td><select name="contact" id="contact" class="champ">
<option value="Aucune
Choisissez</option>
<option value="tel">téléphone</option>
<option value=" mail">Par mail</option>
</select>
&nbsp;(*) </td>
</tr>
<tr>
<td>&nbsp;</td>
<td><p><strong><font face="Arial, Helvetica, sans-serif">Descriptif de votre demande :</font> </strong></font></p>
<p>
<input type="file" name="fichier" accept="image/jpeg" size="50" />
<input type="hidden" name="MAX_FILE_SIZE" value="200000" />
&nbsp;</p>
<p>
<td>

<td>&nbsp;</p></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><textarea name="descriptif" cols="60" rows="8" class="champ"></textarea>
</font>&nbsp; (*)</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>
<div align="left">
<input name="envoie" type="hidden" value="1" />
<input name="image" type="image" src="valider.jpg" />
&nbsp;
<input type="button" value="Imprimer cette page" onClick="window.print()">
&nbsp;&nbsp;<input name="r&eacute;initialiser" type="reset" value="R&eacute;initialiser" /></div></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><font face="Arial, Helvetica, sans-serif"><b>(*) Champs obligatoires</b></font></td>
</tr>
<tr>
<td>&nbsp;</td>
<td> <div align="left"></div></td>
</tr>
</table>
</form>
<?php }?>
<!--Code php-->
<?php
if (isset($_FILES))
{
echo "Taille maximale autorisée :",$_POST["MAX_FILE_SIZE"]," octets<hr />";
echo "<b>Clés et valeurs du tableau \$_FILES </b><br />";
foreach($_FILES["fichier"] as $cle => $valeur)
{
echo "clé:: $cle valeur : $valeur <br />";
}
//Enregistrement et renommage du fichier
$result=move_uploaded_file($_FILES["fichier"]["tmp_name"],"demande.doc");
if ($result==TRUE){echo "<hr /><big>Le transfert est réalisé !</big>";}
else{echo "<hr /> Erreur de transfert n°",$_FILES["fichier"]["error"];}
}
?>

</body>
</html>
je ne sais pas comment m'y prendre pour commencer et arriver à récupérer en pièce jointe dans mon mail, un fichier joint dans un formulaire. Quelqu'un pourrais il me faire des suggestions. Merci d'avance à celles ou ceux qui voudront ce pencher sur mon problème. bonne journée à tous. :heink:
didierl47
  
   
      ?   @     Posté le 21/05/2008 18:12:07  
Voter pour ce message
Rebonjour, comme nous travaillons avec un camarade sur ce formulaire, il m'a envoyé la solution suivante que j'ai testé sur easyphp 1.8. Pour l'instant nous travaillon sur un formulaire d'envoi de mail, mais le formulaire complet que nous avons élaboré est plus long:
le formulaire html
<form name='formularaire' id='formulaire' method='post' action='enviar.php' target='_self' enctype="multipart/form-data">
<p>Nom <input type='text' name='Nom' id='Nom'></p>
<p>E-mail
<input type='text' name='email' id='email'>
</p>
<p>Object
<input type='text' name='object' id='object' />
</p>
<p>Menssage
<textarea name="menssage" cols="50" rows="10" id="menssage"></textarea>
</p>
<p>Jointer Fichier: <input type='file' name='Fichier1' id='Fichier1'></p>
<p>
<input type='submit' value='Envoyer'>
</p>
</form>
le code php: envoi.php
<?php
function form_mail($sPour, $sObject, $sText, $sDe)
{
$bIlyaFichiers = 0;
$sEnteteText = "";
$sJointees = "";

if ($sDe)$sEntetes = "From:".$sDe."\n";
else $sEntetes = "";
$sEntetes .= "MIME-version: 1.0\n";
foreach ($_POST as $sNom => $sValeur)
$sText = $sText."\n".$sNom." = ".$sValeur;

foreach ($_FILES as $vJointees)
{
if ($bIlyaFichiers == 0)
{
$bIlyaFichiers = 1;
$sEntetes .= "Content-type: multipart/mixed;";
$sEntetes .= "boundary=\"--_Separador-de-mensajes_--\"\n";

$sEnteteText = "----_Separador-de-mensajes_--\n";
$sEnteteText .= "Content-type: text/plain;charset=iso-8859-1\n";
//$sEnteteText .= "Content-transfer-encoding: 7BIT\n";

$sText = $sEnteteText.$sText;
}
if ($vJointees["size"] > 0)
{
$sJointees .= "\n\n----Separateur des messages_--\n";
$sJointees .= "Content-type: ".$vJointees["type"].";name=\"".$vJointees["name"]."\"\n";;
//$sJointees .= "Content-Transfer-Encoding: BASE64\n";
$sJointees .= "Content-disposition: attachment;filename=\"".$vJointees["name"]."\"\n\n";

$oFichier = fopen($vJointees["tmp_name"], 'r');
$sContenu = fread($oFichier, filesize($vJointees["tmp_name"]));
$sJointees .= chunk_split(base64_encode($sContenu));
fclose($oFichier);
}
}

if ($bIlyaFichiers)
//le separateur tu peut le changer
$sText .= $sJointees."\n\n----_Separateur des messages_----\n";
return(mail($sPour, $sObject, $sText, $sEntetes));
}

//ici l'adresse mail
if (form_mail("monmail@mondomaine.fr ", $_POST[object],
"Les données introduit sur le formulaire son::\n\n", $_POST[email]))
echo "Merci pour les données";
?>
Pb ??????
Tout est récupéré dans le corps du mail:
expéditeur, destinataire, sujet, message et la pièce jointe, qui apparaît encodée et non pas en pièce jointe. Est ce que le pb ne viendrait pas d'easyphp qui ne permettrait pas l'envoi d'une pièce jointe. Sinon où est l'erreur dans le code. Merci pour votre aide, car cela fait 2 jours que nous travaillons sur ça et là nous bloquons complétement.
<     1       >

01net > Forum de 01net > Programmation et développement > PHP
> pièce jointe dans un formulaire avec réception par mail

Aller à :

Page générée en : 0.119s - X2board 2.2

Nous contacter | Charte de confiance | Voir notice légale

Tous droits réservés © 1999 - 2008 Groupe Tests - 01net.


Sites du réseau 01net Network : 01net - 01men - Rmc.fr - Bfmtv.fr - Radiobfm.com - TousLesPodcasts - Micro Achat

Emploi 
Recherches d'emploi :
Les rémunérations, les offres de dernière minute , les formations, ...  !
Shopping 
Une sélection spéciale de maillots masculins pour se mettre dans le bain...des vacances !