problème de pièce jointe dans un email
Hors ligneLoic82 Le 22/06/2012 à 09:48 Profil de Loic82 Configuration de Loic82

Bonjour j'ai des problèmes de code.
J'arrive bien à envoyer un email (à partir d'un formulaire) mais la pièce jointe n'arrive pas.

il s'agit d'une page reception. php qui reçoit et traite les données d'un formulaire.

Le but est que les gens postent un fichier jpg ou autre et que cela soit envoyé par email pour éviter un upload direct sur le serveur.
si quelqu'un peut regarder le code?
merci d'avance

 

if (isset($_POST['envoye']))
{
    /* Récupération des valeurs des champs du formulaire */
    if (get_magic_quotes_gpc())
    {
      $civilite		= stripslashes(trim($_POST['civilite']));
      $nom	     	= stripslashes(trim($_POST['nom']));
      $expediteur	= stripslashes(trim($_POST['email']));
      $sujet		= stripslashes(trim($_POST['sujet']));
      $message		= stripslashes(trim($_POST['message']));
	
	  $icone		= ($_POST['icone']);		
	  $fichier		= stripslashes(trim($_POST['mon_fichier']));
    }
    else
    {
      $civilite		= trim($_POST['civilite']);
      $nom		    = trim($_POST['nom']);
      $expediteur	= trim($_POST['email']);
      $sujet		= trim($_POST['sujet']);
      $message		= trim($_POST['message']);
	  $icone		= ($_POST['icone']);
	  
	  $fichier		= strim($_POST['mon_fichier']);
    }
    
    /* Expression régulière permettant de vérifier si le 
    * format d'une adresse e-mail est correct */
    $regex_mail = '/^[-+.\w]{1,64}@[-.\w]{1,64}\.[-.\w]{2,6}$/i';
    
    /* Expression régulière permettant de vérifier qu'aucun 
    * en-tête n'est inséré dans nos champs */
    $regex_head = '/[\n\r]/';
	
    if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $mail))
	{
		$passage_ligne = "\r\n";
	}
	else
	{
		$passage_ligne = "\n";
	}
    /* Si le formulaire n'est pas posté de notre site on renvoie 
    * vers la page d'accueil */
    if($_SERVER['HTTP_REFERER'] != 'http://www.monsite.upload.php')
    {
      header('Location: http://www.monsite.upload.php/');
    }
    /* On vérifie que tous les champs sont remplis */
    elseif (empty($civilite) 
           || empty($nom) 
           || empty($expediteur) 
           || empty($sujet) 
           || empty($message))
    {
      $alert = 'Tous les champs doivent être renseignés';
    }
    /* On vérifie que le format de l'e-mail est correct */
    elseif (!preg_match($regex_mail, $expediteur))
    {
      $alert = 'L\'adresse '.$expediteur.' n\'est pas valide';
    }
    /* On vérifie qu'il n'y a aucun header dans les champs */
    elseif (preg_match($regex_head, $expediteur) 
            || preg_match($regex_head, $nom) 
            || preg_match($regex_head, $sujet))
    {
        $alert = 'En-têtes interdites dans les champs du formulaire';
    }
	//* On vérifie que le fichier est bon  
    
	
    /* Si aucun problème et aucun cookie créé, on construit le message et on envoie l'e-mail */
    elseif (!isset($_COOKIE['sent']))
    {
        /* Destinataire (votre adresse e-mail) */
        $to = 'thomaspastorale@gmail.com';
      
		//=====Lecture et mise en forme de la pièce jointe.
		$fichier   = fopen("$icone", "r");
		$attachement = fread($fichier, filesize("image.jpg"));
		$attachement = chunk_split(base64_encode($attachement));
		fclose($fichier);
		$attachement = chunk_split(base64_encode($attachement));
		
        /* Construction du message */
        $msg  = 'Bonjour,'."\r\n\r\n";
        $msg .= 'Ce mail a été envoyé depuis www.monsite  par '.$civilite.' '.$nom."\r\n\r\n";
        $msg .= 'Voici le message qui vous est adressé :'."\r\n";
        $msg .= '***************************'."\r\n";
        $msg .= $message."\r\n";
        $msg .= '***************************'."\r\n";
		
		
        /* En-têtes de l'e-mail */
        
		$headers ='From: '.$nom.' <'.$expediteur.'>'."\r\n\r\n";
		$header .= "Reply-to: \"WeaponsB\" @mail.fr>".$passage_ligne;
		$header .= "MIME-Version: 1.0".$passage_ligne;
		$header .= "Content-Type: multipart/mixed;".$passage_ligne." boundary=\"$boundary\"".$passage_ligne;
       
	   
	//=====Ajout de la pièce jointe.
	$mess2.= "Content-Type: image/jpeg; name=\"$icone\"".$passage_ligne;
	$mess2= "Content-Transfer-Encoding: base64".$passage_ligne;
	$mess2= "Content-Disposition: attachment; filename=\"image.jpg\"".$passage_ligne;
	$mess2= $passage_ligne.$attachement.$passage_ligne.$passage_ligne;
	$mess2= $passage_ligne."--".$boundary."--".$passage_ligne; 
	//========== 
        /* Envoi de l'e-mail */
        if (mail($to, $sujet, $msg, $headers,$mess2))
        {
            echo 'E-mail envoyé avec succès';
            
            /* On créé un cookie de courte durée (ici 120 secondes) pour éviter de 
            * renvoyer un mail en rafraichissant la page */
            setcookie("sent", "1", time() + 120);
            
            /* On détruit la variable $_POST */
            unset($_POST);
        }
        else
        {
            $alert = 'Erreur d\'envoi de l\'e-mail';
        }
          
    }
    /* Cas où le cookie est créé et que la page est rafraichie, on détruit la variable $_POST */
    else
    {
        unset($_POST);
    }
}

?>

 

Vous avez résolu votre problème avec VIC ? Faites-le savoir sur les réseaux sociaux !
Vulgarisation-informatique.com
Cours en informatique & tutoriels