IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Pièce jointe, bonne taille mais lecture impossible !


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 684
    Par défaut Pièce jointe, bonne taille mais lecture impossible !
    Bonjour,
    J'éberge mon site et mon script me contacter tourne bien
    Mon soucis, si on m'envoie en pièce jointe un fichier avec
    l'extention JPG, je reçois bien le mail avec la pièce jointe
    avec la bonne taille, mais la lecture me donne une page blanche !
    J'ai vérifié avec un éditeur, le fichier truc.jpg est bien rempli.
    Je galère depuis trois jours, ayant fait plein de recherches,
    mais rien ne corrige ce problème.
    voici mon source :
    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
     
    Le Formulaire :
    <html> <body> 
    <form ENCTYPE="multipart/form-data" action="./mail4.php" method=POST>
    <center>
    De: <input type=text name = "from" size="30"><br>
    Destinataire: <input type=text name = "to" size="30"><br>
    Sujet: <input type=text name = "sujet" size="30"><br><br>
    Texte :<br><textarea name="message" rows="15" cols="40"></textarea><br>
    <INPUT TYPE=FILE NAME="monfichier"><BR>
    <input type=submit value="envoi">
    </center>
    </form>
    </body> </html>
     
    Le fichier de traitement :
    <html> <body> <center>
    <?
    $name_file = $_FILES['monfichier']['name']; 
     
    // Construction de l'entête
    if($_POST['to']!="")
      {
       $boundary = "-----=".md5(uniqid(rand()));
       $header = "MIME-Version: 1.0\r\n";
       $header .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n";
       $header .= "\r\n";
       $msg  ="\r\n";
       $msg .= "--$boundary\r\n";
       $msg .= "Content-Transfer-Encoding:64it\r\n";
       $msg .= "\r\n";
       $msg .= $_POST['message'];
       $msg .= "\r\n";
     
       if($name_file!="")
         {
          $file = $name_file;
          $fp = fopen($file, "rb");  
          $attachment = fread($fp, filesize($file));
          fclose($fp);
          $attachment = chunk_split(base64_encode($attachment));
     
          $msg .= "--$boundary\r\n";
          $msg .= "Content-Type: image/jpeg; name=\"$file\"\r\n";
          $msg .= "Content-Transfer-Encoding: base64\r\n";
          $msg .= "Content-Disposition: inline; filename=\"$file\"\r\n";
          $msg .= "\r\n";
          $msg .= $attachment . "\r\n";
          $msg .= "\r\n\r\n";
          $msg .= "--$boundary--\r\n";
         }
     
       $destinataire = $_POST['to'];
       $expediteur   = $_POST['from'];
       $reponse      = $expediteur;
     
       mail($destinataire, $_POST['sujet'], $msg, "Reply-to: $reponse\r\nFrom: $expediteur\r\n".$header);
      }
    ?>
    </center> </body> </html>
    Précision je ne veut recevoir que des fichiers en JPG
    Ayant épuisé tout ce que j'ai pu trouver, je me tourne vers vous
    pour une éventuelle solution
    Merci à tous

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Par défaut
    - As-tu essayé sur plusieurs adresses email ?
    - Quand tu dis qu'avec un editeur tout te parait normal, est-ce que ca signifie que le contenu est bien un fichier JPEG.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 684
    Par défaut
    Bonjour,
    Oui, j'ai essayé dans plusieurs BAL mème résultat
    Ce que j'ai vérifié avec l'éditeur, c'est que le fichier JPG
    contenait bien des cractères mais le contenu bien que
    faisant la mème taille est complètement différent !

    En fouillant un peu plus, le fichier que je reçois est
    encodé en base64
    J'ai décodé les 20 premiers caractères et la, je retrouve
    bien les 20 premiers caractères du fichier original

    Comment éviter cela ?

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Par défaut
    Tu as ajouté un it à la fin de ton Encoding, peux-tu le supprimer pour voir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $msg .= "Content-Transfer-Encoding:64it\r\n";
    Sinon je te conseille vivement d'utiliser des librairies, c'est plus simple que d'avoir a refaire toute l'API d'envoi de mail.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 684
    Par défaut
    Non, cela ne change rien
    idem si je supprime cette ligne !

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Par défaut
    Mon intuition est que ton fichier est bien encodé en base 64 mais qu'a l'arrivé le serveur ne reçoit pas cette information donc ne prend pas la peine de le décoder.

Discussions similaires

  1. [téléchargement PJ] Pièce jointe de taille nulle
    Par btdl79 dans le forum Internet
    Réponses: 8
    Dernier message: 26/06/2012, 11h09
  2. Réponses: 5
    Dernier message: 05/09/2010, 12h20
  3. Réponses: 6
    Dernier message: 06/11/2007, 17h38
  4. Réponses: 39
    Dernier message: 27/03/2007, 20h25
  5. Réponses: 1
    Dernier message: 03/12/2005, 12h24

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