Rechercher : dans
Par :

Aide formulaire php pièce jointe

Dernière réponse le 8 mar 2009 à 22:56:53 azerto00, le 5 mar 2009 à 12:19:51 
 Signaler ce message aux modérateurs

Bonjour,
J'ai récement trouver un formulaire avec envoi de pièce jointe qui fonctionne, je voudrais maintenant le perfectionner en proposant l'envoi de 5 pièce jointe sauf que .... je sais pas ce qu'il faut rajouter en php , je connais le php mais pas du tout les expressions pour ce qui est traitement d'un fichier.

Voila ma page index.htm qui contient le formulaire html :

<form name="contact" method="post" action="contactok.php" enctype="multipart/form-data">
Nom :<input type="text" name="nom" size="20"></p>
  <p>Email<input type="text" name="mail" size="20"></p>
  <p>Message<input type="text" name="message" size="20"></p>

<input type=file size=40 name="attach">
<input type=file size=40 name="attach2">

  <p>&nbsp;</p>
  <p><input type="submit" value="Submit" name="B1"><input type="reset" value="Reset" name="B2"></p>
</form>


ET maintenant la page php qui traite les informations :

<?
	
	// ADRESSE DU DESTINATAIRE
	$to="xxxxxx@gmail.com";

//
	
	// SUJET DU MESSAGE
	$sujet=".Message.";

	// ENTETES
	$entetes="From:$nom $prenom<info@coco-photocop.fr>\r\n";
	
	// MESSAGE
	$msg.="\nNom : $nom\n";
	$msg.="E mail : $mail\n";
	$msg.="\nMessage :\n\n$message";
	
	$msg = stripslashes($msg); 
	
	
	
	if (is_uploaded_file($attach)) {
    $file = fopen($attach, "r");
    $contents = fread($file, $attach_size);
    $encoded_attach = chunk_split(base64_encode($contents));
    fclose($file);

   $entetes.= "MIME-version: 1.0\n";
   $entetes.= "Content-type: multipart/mixed; ";
   $entetes.= "boundary=\"Message-Boundary\"\n";
   $entetes.= "Content-transfer-encoding: 7BIT\n";

    $body_top = "--Message-Boundary\n";
    $body_top .= "Content-type: text/plain; charset=US-ASCII\n";
    $body_top .= "Content-transfer-encoding: 7BIT\n";
    $body_top .= "Content-description: Mail message body\n\n";

    $msg .= "\n\n--Message-Boundary\n";
    $msg .= "Content-type: $attach_type; name=\"$attach_name\"\n";
    $msg .= "Content-Transfer-Encoding: BASE64\n";
    $msg .= "Content-disposition: attachment; filename=\"$attach_name\"\n\n";
    $msg .= "$encoded_attach\n";
    $msg .= "--Message-Boundary--\n";
  }
	
$msg = $body_top.stripslashes($msg);	

	if (mail($to,$sujet,$msg,$entetes))
	{


Voila je sais pas comment traiter le 2eme fichier <input type=file size=40 name="attach2">
Configuration: Windows XP
Firefox 3.0.6

Meilleures réponses pour « Aide formulaire php pièce jointe » dans :
Envoyer de gros fichiers (pièces jointes) par mail VoirLes systèmes de messagerie bloquent généralement les pièces jointes volumineuses, alors comment faire parvenir un fichier lourd (de plusieurs Mo) à son destinataire ? La solution consiste à utiliser un service d'hébergement temporaire de fichiers...
[Outlook Express] Pièces jointes impossibles à envoyer VoirSi Outlook Express ne peut pas envoyer les pièces jointes ajoutées à votre mail, ceci est probablement dû au fait qu'elles possèdent une taille trop volumineuse. Pour y remédier, la solution consiste à scinder les pièces jointes en plusieurs...
Outlook Express bloque les pièces jointes VoirLors de la consultation d'un email, Outlook (Express) refuse d'ouvrir les fichiers attachés. Il s'agit vraisemblablement d'un problème de configuration de Outlook évitant l'ouverture des pièces jointes pour des raisons de sécurité. Pour y...

1

azerto00, le 6 mar 2009 à 14:05:09

Up

Répondre à azerto00

2

 azerto00, le 8 mar 2009 à 22:56:53
  • +1

UP! avec modification car une partie de la réponse trouvé ...
Bonjour, j'ai un code php trouvé sur internet que je souhaiterai améliorer.
Pour comprendre, je cherche à faire un formulaire avec envoi de plusieurs pièces jointe.
LE code marche pour l'envoi d'un fichier, (si c'est une image elle est incorporé dans le coprs du message)
Je souhaite ajouter la possibilité d'envoyer une 2eme pièce jointe.

Il doit y avoir une erreur de syntaxe car la 1ere pièce jointe est inclus dans le mail que je recoi mais la seconde c'est comme si elle existait pas ....


PHP:
if (is_uploaded_file($attach)) {
$file = fopen($attach, "r");
$contents = fread($file, $attach_size);
$encoded_attach = chunk_split(base64_encode($contents));
fclose($file);

$msg .= "\n\n--Message-Boundary\n"; //
$msg .= "Content-type: $attach_type; name=\"$attach_name\"\n";
$msg .= "Content-Transfer-Encoding: BASE64\n";
$msg .= "Content-disposition: attachment; filename=\"$attach_name\"\n\n";
$msg .= "$encoded_attach\n";
$msg .= "--Message-Boundary--\n";

}

if (is_uploaded_file($attach2)) {
$file2 = fopen($attach2, "r");
$contents2 = fread($file2, $attach2_size);
$encoded_attach2 = chunk_split(base64_encode($contents2));
fclose($file2);

$msg .= "\n\n--Message-Boundary\n"; //
$msg .= "Content-type: $attach2_type; name=\"$attach2_name\"\n";
$msg .= "Content-Transfer-Encoding: BASE64\n";
$msg .= "Content-disposition: attachment; filename=\"$attach2_name\"\n\n";
$msg .= "$encoded_attach2\n";
$msg .= "--Message-Boundary--\n";

}

JE pense que je avez compris que les 2 input file sont nommées :
- attach
- attach2
Merci d'avance !

Répondre à azerto00