p
u
b
l
i
c
i
t
é
publicité
  1. #1
    Invité de passage
    Homme Profil pro
    Webmaster
    Inscrit en
    juin 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Services à domicile

    Informations forums :
    Inscription : juin 2012
    Messages : 5
    Points : 0
    Points
    0

    Par défaut Mauvais format de la pièce jointe

    j'ai un petit souci avec mes pièces jointe.
    Je reçois tout correctement à l'exception de ma pièce jointe qui n'est qu'un fichier texte au lieu d'avoir la pièce en attachement.
    Je précise que mon fichier récupéré par un formulaire est bien chargé dans mon dossier "uploads"
    voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
     
    <?php
         //----------------------------------------------- 
         //PIECE JOINTE 
         //----------------------------------------------- 
    	 $uploaddir = '../uploads/';
    	 $upload_file = $uploaddir . $_FILES['Fichier']['name'];
     
    	 if (move_uploaded_file($_FILES['Fichier']['tmp_name'], $upload_file)) { 
            $ext = explode(".", basename($_FILES['Fichier']['name']));
     
            switch($ext[1]) { 
                default:       
                $attach_type =  "application/octet-stream";  
            break; 
                case "gz":    
                $attach_type =  "application/x-gzip";  
            break; 
                case "tgz":   
                $attach_type =  "application/x-gzip";  
            break; 
                case "zip":   
                $attach_type =  "application/zip"; 
            break; 
                case "pdf":   
                $attach_type =  "application/pdf"; 
            break; 
                case "png":   
                $attach_type =  "image/png"; 
            break; 
                case "gif":   
                $attach_type =  "image/gif"; 
            break; 
                case "jpg": 
                case"jpeg":   
                $attach_type =  "image/jpeg"; 
            break; 
                case "txt":   
                $attach_type =  "text/plain"; 
            break; 
                case "htm":   
                $attach_type =  "text/html";   
            break; 
                case "html":  
                $attach_type =  "text/html"; 
            break; 
            }
    	$attach_name = $_FILES["Fichier"]["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); 
         } 
    	 //----------------------------------------------- 
         //HEADERS DU MAIL 
         //----------------------------------------------- 
     
         $headers = 'From : <'.$EmailExpediteur.'>'."\n"; 
         $headers .= 'Return-Path: <inscription@massageavenue.fr>'."\n";
         $headers .= 'MIME-Version: 1.0'."\n"; 
         $headers .= 'Content-Type: multipart/mixed; boundary="'.$frontiere.'"'; 
    	 $headers .= "Content-transfer-encoding: 7BIT\n"; 
         $headers .= "X-attachments: $attach_name\n";
     
     
    			 $message .= $frontiere."\r\n";
    			 $message .= "Content-type: $attach_type; name=\"$attach_name\n";
    			 $message .= "Content-Length: " . filesize($upload_file) . "\n";
            	 $message .= "Content-transfer-Encoding: BASE64\n";
            	 $message .= "Content-Disposition: attachment; filename=\"$attach_name\"\n\n"; 
    			 $message .= "$encoded_attach\n"; 
            	 $message .= $frontiere."\r\n";
     
     
         if(mail($email_destinataire,$sujet,$message,$headers)) 
         { 
              echo 'Le mail a été envoyé';
    		  ?>
      		  <input type="submit" name="Validation" id="Validation" value="Retour à la page d'accueil" onclick="self.location.href =' ../index.php'"/>
      		  <?php 
         } 
         else 
         { 
              echo 'Le mail n\'a pu être envoyé'; 
    		  ?>
      		  <input type="submit" name="Validation" id="Validation" value="Retour au formulaire" onclick="self.location.href =' ../php/FormulaireInscription.php'"/>
      		  <?php
         } 
    ?>

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    avril 2007
    Messages
    5 683
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : avril 2007
    Messages : 5 683
    Points : 10 980
    Points
    10 980

    Par défaut

    Une structure switch c'est l'équivalent d'une succession de if/else if, le case default correspondant normalement au else, c'est-à-dire au cas valable lorsque tous les autres ont échoués, et se place en dernier.
    Sauf que toi, tu as mis le defaut en 1er. Du coup, au lieu d'une structure if/else if, tu commences par un if(true) Aucun chance donc de passer par les autres cas.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

    Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [CODEINLINE=php][/CODEINLINE]

  3. #3
    Expert Confirmé Sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    septembre 2010
    Messages
    3 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : septembre 2010
    Messages : 3 154
    Points : 5 371
    Points
    5 371

    Par défaut

    A part cela je ne ne vois pas pourquoi tu télécharge le fichier dans un dossier si c'est seulement pour le mettre en pièce jointe dans un mail...
    Et pour déterminer le Content-type tu peux utiliser directement $_FILES['Fichier']['type'].

    Si le sujet t'intéresse tu peux regarder ce post

Discussions similaires

  1. [javamail]format pièce jointe
    Par <romain/> dans le forum APIs
    Réponses: 12
    Dernier message: 09/12/2009, 16h04
  2. Réponses: 6
    Dernier message: 13/05/2009, 12h55
  3. Générer des mail avec pièce jointe au format PDF
    Par Michel DELAVAL dans le forum Access
    Réponses: 2
    Dernier message: 26/06/2006, 15h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo