Posez votre question Signaler

PB PHP MAIL AVEC PIECE JOINTE

saeeezz - Dernière réponse le 28 juin 2009 à 12:19
Bonjour,
J'ai un script php qui me permet d'envoyer un mail avec pièce jointe, le script fonctionne et envoie le mail ainsi que la pièce jointe mais le problème est le suivant :
Quand j'essaye d'ouvrir la pièce jointe elle fait 0 octet et me donne un message d'erreur du style : le fichier a été envoyé en tant que pièce jointe et n'a pas pu être décodé correctement...
Voici le script en question
<?php
// Couleur du texte des champs si erreur saisie utilisateur
$color_font_warn="#FF0000";
// Couleur de fond des champs si erreur saisie utilisateur
$color_form_warn="#FFCC66";
// Ne rien modifier ci-dessous si vous n’êtes pas certain de ce que vous faites !
if(isset($_POST['submit'])){
	$erreur="";
	// 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_1=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_1)));
	$f_2=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_2)));
	$f_3=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_3)));
	$f_4=strip_tags(trim($f_4));
	// Verification des champs
	if(strlen($f_1)<2){
		$erreur.="<li><span class='txterror'>Le champ &laquo; Nom &raquo; est vide ou incomplet.</span>";
		$errf_1=1;
	}
	if(strlen($f_2)<2){
		$erreur.="<li><span class='txterror'>Le champ &laquo; Prénom &raquo; est vide ou incomplet.</span>";
		$errf_2=1;
	}
	if(strlen($f_4)<2){
		$erreur.="<li><span class='txterror'>Le champ &laquo; Email &raquo; est vide ou incomplet.</span>";
		$errf_4=1;
	}else{
		if(!ereg('^[-!#$%&\'*+\./0-9=?A-Z^_`a-z{|}~]+'.
		'@'.
		'[-!#$%&\'*+\/0-9=?A-Z^_`a-z{|}~]+\.'.
		'[-!#$%&\'*+\./0-9=?A-Z^_`a-z{|}~]+$',
		$f_4)){
			$erreur.="<li><span class='txterror'>La syntaxe de votre adresse e-mail n'est pas correcte.</span>";
			$errf_4=1;
		}
	}
	if(strlen($f_5)<2){
		$erreur.="<li><span class='txterror'>Le champ &laquo; Message &raquo; est vide ou incomplet.</span>";
		$errf_5=1;
	}

	
	 //-----------------------------------------------
     //DECLARE LES VARIABLES
     //-----------------------------------------------

		$message_texte="Nom : ".$f_1."\n";
		$message_texte.="Prénom : ".$f_2."\n";
		$message_texte.="Société : ".$f_3."\n";
		$message_texte.="Email : ".$f_4."\n";
		$message_texte.="Message : ".$f_5."\n";
	 
     $email_expediteur=$f_4;
     $email_reply=$f_4;

     //-----------------------------------------------
     //GENERE LA FRONTIERE DU MAIL ENTRE TEXTE ET HTML
     //-----------------------------------------------

     $frontiere = '-----=' . md5(uniqid(mt_rand()));

     //-----------------------------------------------
     //HEADERS DU MAIL
     //-----------------------------------------------
	 $header = 'From: "'.$f_1.'" <'.$email_expediteur.'>'."\n";
	 $header .= 'Return-Path: <'.$email_reply.'>'."\n";
	 $header .= 'MIME-Version: 1.0'."\n";
	 $header .= 'Content-Type: multipart/mixed; boundary="'.$frontiere.'"';

     //-----------------------------------------------
     //MESSAGE TEXTE
     //-----------------------------------------------
	 $message = 'This is a multi-part message in MIME format.'."\n\n";
	 $message .= '--'.$frontiere."\n";
	 $message .= 'Content-Type: text/plain; charset="utf-8"'."\n";
	 $message .= 'Content-Transfer-Encoding:8bit'."\n\n";
	 $message .= $message_texte."\n\n";
	 $message .= '--'.$frontiere."\n";

     //-----------------------------------------------
     //PIECE JOINTE
     //-----------------------------------------------
	 
	 $fileName = $_FILES['cv']['name'];
	 $fileType = $_FILES['cv']['type'];
	 $fileSource = $_FILES['cv']['tmp_name'];

	 $message .= 'Content-Type:'.$fileType.'; name="'.$fileName.'"'."\n";
	 $message .= 'Content-Transfer-Encoding: base64'."\n";
	 $message .= 'Content-Disposition:attachement; filename="'.$fileName.'"'."\n\n";
	 $message .= chunk_split(base64_encode(file_get_contents($fileSource)))."\n";
	 
	 $message .= '--'.$frontiere.'--'."\n";
	 
		if($erreur==""){
		// Création du message
		$titre="MESSAGE DU SITE";
		if(mail('mail@wanadoo.fr',$titre,$message,$header)){
			$ok_mail="true";
		}else{
			$erreur.="<li><span class='txterror'>Une erreur est survenue lors de l'envoi du message, veuillez refaire une tentative.</span>";
		}
	}
}
?>

Si quelqu'un a une solution, je suis preneur car je cherche depuis des heures et mon niveau de programmation PHP est très limité ;)
Merci par avance
Lire la suite 
Réponse
+0
moins plus
Ajouter un commentaire
Annonces
 
moins plus
Ce document intitulé «  PB PHP MAIL AVEC PIECE JOINTE  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.