Erreur de mail et piece jointe

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Erreur de mail et piece jointe

Re: Erreur de mail et piece jointe

par moogli » 04 août 2013, 15:39

salut,


et c'est quoi l'erreur ?

tu devrais essayer la librairie PHPMailer qui te fera le travail ;)

coté code tu devrais l'indenter correctement c'est pas super lisible ton affaire du coup ça rebute les gens qui peuvent être tenté de t'aider et ça ne te facilite pas la vie.

le fopen / fread / flose peux être remplacer par le file_get_contents qui est avant le switch.

pourquoi copier le fichier ? utilise directement le fichier temporaire.
Se baser sur l'extension du fichier pour en déterminer le content-type va t'induire en erreur le jour ou quelqu'un te fournit quelque chose d'erroné.


pour info les lignes 3 & 4 de ton source html ne sont pas a leurs place elles devraient être dans le head.

pour te simplifier la vie tu devrais essayer la librairie phpmailer

@+

Erreur de mail et piece jointe

par Jaber » 03 août 2013, 12:34

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 :
<?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("[email protected]", $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