Erreur piece jointe
Sinistrus
Messages postés
1010
Date d'inscription
Statut
Membre
Dernière intervention
-
ElementW Messages postés 4814 Date d'inscription Statut Contributeur Dernière intervention -
ElementW Messages postés 4814 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour à tous !
Je sollicite votre aide pour résoudre un problème d'envois de mail avec plusieurs pièces jointes.
Je vous présente déjà le travail que j'ai fais (ps: code collé de ci et de là avec quelques petites modifs de ma part)
Voici donc ma page :
Pouvez-vous m'aider à corriger svp ?
Voici la page en question : http://sivop.com/casting_inscription.php
Je sollicite votre aide pour résoudre un problème d'envois de mail avec plusieurs pièces jointes.
Je vous présente déjà le travail que j'ai fais (ps: code collé de ci et de là avec quelques petites modifs de ma part)
Voici donc ma page :
<?php if(isset($_POST['Envoyer'])){$erreur=""; $regex_head = '/[\n\r]/'; $boundary = "_".md5 (uniqid (rand())); // Nettoyage des entrées while(list($var,$val)=each($_POST)){if(!is_array($val)){$$var=strip_tags($val);} else{while(list($arvar,$arval)=each($val)){$$var[$arvar]=strip_tags($arval);}}} // Formatage des entrées $f_01=trim(ucwords(preg_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_01))); //Nom $f_02=trim(ucwords(preg_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_02))); //Email $f_03=trim(ucwords(preg_replace("[^0-9\ +]", "", $f_03))); //Téléphone $f_04=trim(ucwords(preg_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_04))); //Commentaire $f_11=strip_tags(trim($f_11)); $f_12=strip_tags(trim($f_12)); // Verification des champs if(strlen($f_01)<2){$erreur.="<li>".$CAS_ErrNoms; $errf_01=1;} if(strlen($f_02)<2){$erreur.="<li>".$CAS_ErrEmail1; $errf_02=1; }else{ if(!preg_match('/^[^@]{1,64}@[^@]{1,255}$/', $f_02)){$erreur.="<li>".$CAS_ErrEmail2; $errf_02=1;}} if(strlen($f_03)<2){$erreur.="<li>".$CAS_ErrPhone; $errf_03=1;} if($_FILES['f_05']['error'] == UPLOAD_ERR_NO_FILE) {$erreur.="<li>".$CAS_ErrPhoto1; $errf_05=1;} if($_FILES['f_06']['error'] == UPLOAD_ERR_NO_FILE) {$erreur.="<li>".$CAS_ErrPhoto2; $errf_06=1;} if($_FILES['f_07']['error'] == UPLOAD_ERR_NO_FILE) {$erreur.="<li>".$CAS_ErrPhoto3; $errf_07=1;} // Création du message if($erreur==""){ //$attached_file = file_get_contents($f_05); //$attached_file = chunk_split(base64_encode($attached_file)); $upload_file = $uploaddir . $_FILES['f_05']['name']; if (move_uploaded_file($_FILES['f_05']['tmp_name'], $upload_file)) { $ext = explode(".", basename($_FILES['f_05']['name'])); switch($ext[1]) { default: $attach_type = "application/octet-stream"; break; case "png": $attach_type = "image/png"; break; case "gif": $attach_type = "image/gif"; break; case "jpg": $attach_type = "image/jpg"; break; case"jpeg": $attach_type = "image/jpeg"; break; case "bmp": $attach_type = "image/bmp"; break;} $piecejointe = $_FILES["f_05"]["name"];} if (file_exists($upload_file)) { $file = fopen($upload_file, "r"); $contents = fread($file, filesize($upload_file)); $encoded_attach = chunk_split(base64_encode($contents)); fclose($file);} // Message $titre= $CAS_CandidCasting; $tete.= "X-Priority: 1 \n"; $tete.= "From:".$f_02."\n"; $tete = "MIME-version: 1.0\n"; $tete.= "Content-type: multipart/mixed; "; $tete.= "boundary=\"Message-Boundary\"\n"; $tete.= "Content-transfer-encoding: 7BIT\n"; $tete.= "X-attachments:".$piecejointe."\n"; $corps = "--Message-Boundary\n"; $corps.= "Content-type: text/plain; charset=ISO-8859-1\n"; $corps.= "Content-transfer-encoding: 7BIT\n"; $corps.= "\n\n--Message-Boundary\n"; $corps.= "Content-type:".$attach_type."; name=".$piecejointe."\n"; $corps.= "Content-Length:".filesize($piecejointe)."\n"; $corps.= "Content-transfer-Encoding: BASE64\n"; $corps.= "Content-disposition: attachment; filename=".$piecejointe."\n\n"; $corps.= "$encoded_attach\n"; $corps.= "--Message-Boundary--\n"; $corps.=$CAS_NomPrenom. " : ".$f_01."\n"; $corps.=$CAS_AdresseEmail. " : ".$f_02."\n"; $corps.=$CAS_Telephone. " : ".$f_03."\n"; $corps.=$CAS_Commentaire. " : ".$f_04."\n\n"; $corps.=$CAS_Photos1. " : ".$f_05."\n"; $corps.=$CAS_Photos2. " : ".$f_06."\n"; $corps.=$CAS_Photos3. " : ".$f_07."\n"; $corps.=$CAS_Photos4. " : ".$f_08."\n"; $corps.=$CAS_Photos5. " : ".$f_09."\n"; $corps.=$CAS_Photos6. " : ".$f_10."\n\n"; $corps.=$CAS_Facebook. " : ".$f_11."\n"; $corps.=$CAS_Site. " : ".$f_12."\n"; if(mail("monmail@amoi.com", $titre, stripslashes($corps), $tete)){ $ok_mail="true";}else{$erreur.="<div class='DivError TexteError'><li>".$CAS_ErreurEnvois2."</div>";}}} ?>
Pouvez-vous m'aider à corriger svp ?
Voici la page en question : http://sivop.com/casting_inscription.php
A voir également:
- Erreur piece jointe
- Pièce d'identité - Accueil - Services publics
- 1 pièce jointe - Guide
- One piece kai streaming ✓ - Forum Cinéma / Télé
- Erreur t32 ✓ - Forum Livebox
- Erreur 0x80070643 - Accueil - Windows
1 réponse
Je ne vois pas de code pour mettre plusieurs pièces jointes ici, juste pour une seule.
Mais il pourrait y en avoir plusieurs: c'est un mesage multipart, donc faut juste ajouter un partie en plus.
Aussi, l'en-tête "X-attachments" n'existe pas, même si elle n'est pas standard, une recherche Google ne nous dis rien sur son éventuelle existence.
L'idéal pour plusieures pièces jointes serait une boucle foreach():
Avant, faut adapter le if (file_exists($upload_file)) après l'upload pour ajouter le fichier à l'array $piecejointes.
Pareil pour l'upoad lui-même, utilise des arrays, des arrays et ENCORE des arrays.
Ton code actuel d'upload ne reçoit qu'un seul fichier, $_FILES['f_05'].
Mais il pourrait y en avoir plusieurs: c'est un mesage multipart, donc faut juste ajouter un partie en plus.
Aussi, l'en-tête "X-attachments" n'existe pas, même si elle n'est pas standard, une recherche Google ne nous dis rien sur son éventuelle existence.
L'idéal pour plusieures pièces jointes serait une boucle foreach():
$piecejointes = [ les chemins des pièce jointes envoyées (absolu ou relatif, peu importe) ]; foreach($piecejointe as $piecejointes) { $nomfichier = basename($piecejointe); $taille = filesize($piecejointe); $file = fopen($piecejointe, "r"); $contents = fread($file, $taille); $encoded_attach = chunk_split(base64_encode($contents)); fclose($file); $corps.= "\n\n--Message-Boundary\n"; $corps.= "Content-type:".$attach_type."; name=".$nomfichier."\n"; $corps.= "Content-Length:".$taille."\n"; $corps.= "Content-transfer-Encoding: BASE64\n"; $corps.= "Content-disposition: attachment; filename=".$nomfichier."\n\n"; $corps.= "$encoded_attach\n"; $corps.= "--Message-Boundary\n"; // Remarque la suppression des deux -- de la fin du Message-Boundary, ils étaient inutils }
Avant, faut adapter le if (file_exists($upload_file)) après l'upload pour ajouter le fichier à l'array $piecejointes.
Pareil pour l'upoad lui-même, utilise des arrays, des arrays et ENCORE des arrays.
Ton code actuel d'upload ne reçoit qu'un seul fichier, $_FILES['f_05'].