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 :

Fichier JPEG attaché à un e-mail ne peut plus être lu après réception


Sujet :

Langage PHP

  1. #1
    Invité
    Invité(e)
    Par défaut Fichier JPEG attaché à un e-mail ne peut plus être lu après réception
    Bonsoir,

    Je fais un script permettant d'envoyer le contenu d'un formulaire web par e-mail, avec un fichier JPEG attache.
    Etant donne que je n'y connais rien en encodage de fichier attache, j'ai pris un script libre trouve sur internet.
    Mais il y a un probleme : lors de la reception du mail, le fihcier attache ne peut plus etre ouvert. Curieusement, sa taille (en bytes) est devenue plus GRANDE qu'avant l'envoi par mail, et Photoshop m'affiche le message d'erreur "la longueur d'un segment de marqueur JPEG est trop courte (le fichier est peut-etre tronque ou incomplet)".
    Auriez-vous une idee de ce qui peut provoquer cela dans le code PHP que j'utilise ? Je remplace du texte par XXXXXXXX pour preserver l'anonymat de l'utilisateur.
    Merci !

    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
    $random_hash = md5(date('r', time())); 
    $headers = "From: ".$from."\r\nReply-To: ".$from.""; 
    $headers .= "\r\nContent-Type: multipart/mixed; boundary=\"PHP-mixed-".$random_hash."\""; 
    $attachment = chunk_split(base64_encode(file_get_contents("/XXXX chemin XXXXXX/".$photo1))); 
    ob_start();
    ?> 
    --PHP-mixed-<?php echo $random_hash; ?>  
    Content-Type: multipart/alternative; boundary="PHP-alt-<?php echo $random_hash; ?>" 
     
    --PHP-alt-<?php echo $random_hash; ?>  
    Content-Type: text/plain; charset="iso-8859-1" 
    Content-Transfer-Encoding: 7bit
     
    <?php
    echo "XXXXXXXX texte contenu dans le mail XXXXXXXXXX"; 
    ?>
     
    --PHP-alt-<?php echo $random_hash; ?>-- 
     
    --PHP-mixed-<?php echo $random_hash; ?>  
    Content-Type: image/jpeg; name="<?php echo $photo1; ?>" 
    Content-Transfer-Encoding: base64  
    Content-Disposition: attachment  
     
    <?php echo $attachment; ?> 
    --PHP-mixed-<?php echo $random_hash; ?>-- 
     
    <?php 
    $message = ob_get_clean(); 
    $mail_sent = @mail( $to, $subject, $message, $headers );

  2. #2
    Modérateur
    Avatar de Vil'Coyote
    Homme Profil pro
    Développeur adélia & Web
    Inscrit en
    Février 2008
    Messages
    4 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur adélia & Web
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2008
    Messages : 4 583
    Points : 7 503
    Points
    7 503
    Par défaut
    après ton Content-Disposition: attachment; il te manque ton name='.$file_name."\r\n";

    c.f : tuto dvp
    la vie n'est pas cirrhose des foies ...

    Avant de poster un message Rechercher n'est pas qu'une option.
    FAQ Web - Tuto Web

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci pour votre reponse. Difficile aussi de se plonger dans le code de quelqu'un d'autre. Le script que vous m'avez renseigne est fort clair mais ne fonctionne pas tel quel (il me renvoie un mail entierement vide, meme en adpatant le nom des variables a mon environnement).

    En l'adaptant, je recois un mail contenant le fichier attache mais celui-ci ne peut toujours pas etre ouvert (le fichier JPEG est cependant valide et peut etre ouvert avec une multitude de logiciels graphiques ).

    Deuxieme probleme, le texte contenu dans le message ne s'affiche pas. On a uniquement le fichier attache.

    Je reposte le nouveau code ci-dessous. Les variables renseignees ($to = e-mail destinataire, $from = e-mail expediteur, $subject = sujet etc...) sont connues et l'existence du fichier $photo1 dans le repertoire $folder a ete verifiee.

    Je dois certainement faire une sottise tellement enorme que je ne la vois pas, peut-etre a cause de la fatigue -- je seche sur cet attachment d'image depuis 3 jours .

    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
    // clé aléatoire de limite
    $boundary = md5(uniqid(microtime(), TRUE));
     
    // Headers
    $headers = "From: ".$from."\r\n";
    $headers .= "Mime-Version: 1.0\r\n";
    $headers .= "Content-Type: multipart/mixed; boundary=".$boundary."\r\n";
    $headers .= "\r\n";
     
    // Message
    $msg = "DEMANDE D'EXPERTISE\n\nDe : ".$nom_sl."\nMail : ".$from."\nTel. ".$telephone."\n\nDescription :\n\n".$description_sl."\r\n\r\n";
     
    // Texte
    $msg .= "--".$boundary."\r\n";
    $msg .= "Content-type:text/plain; charset=utf-8\r\n";
    $msg .= "Content-transfer-encoding:8bit\r\n";
    $msg .= "Un message avec une pièce jointe.\r\n";
     
    // Pièce jointe
    $file_size = filesize($folder."/".$photo1);
    $handle = fopen($folder."/".$photo1, 'r') or die("Le fichier ".$photo1." ne peut etre ouvert");
    $content = fread($handle, $file_size);
    $content = chunk_split(base64_encode($content));
    $f = fclose($handle);
     
    $msg .= "--".$boundary."\r\n";
    $msg .= "Content-type: image/jpeg; name=".$photo1."\r\n";
    $msg .= "Content-transfer-encoding:base64\r\n";
    $msg .= $content."\r\n";
    $msg .= "--".$boundary."\r\n";
     
    // Envoi du mail
    mail($to, $subject, $msg, $headers);
    Un truc me chiffonne dans ce code : "$f = fclose($handle);"
    Je comprends "fclose($handle)" mais pourquoi definir $f si c'est pour ne jamais l'appeler par la suite?

    Merci
    Dernière modification par Invité ; 27/03/2010 à 12h56.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Apres quelques jours d'absence, mon probleme n'est toujours pas regle. En somme: le fichier JPG attache n'est plus reconnu comme JPG valide apres reception du mail. En affichant la source complete du mail, voici de quoi cela a l'air. Quelque chose vous semble-t-il bizarre? Moi je n'ai pas d'experience avec les fichiers attaches...
    Merci

    Code X : 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
    Content-Type: multipart/mixed;boundary=6a20306babe9ecdb95be533f8e59fb9f
    
    
    
    This is a multipart/mixed message
    
    --6a20306babe9ecdb95be533f8e59fb9f
    Content-type: image/jpeg;name=avatar_churchs.jpg
    Content-transfer-encoding: base64
    
    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
    
    --6a20306babe9ecdb95be533f8e59fb9f
    
    --6a20306babe9ecdb95be533f8e59fb9f--

    Et le code PHP finalement utilise :

    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
    // clé aléatoire de limite
    $boundary = md5(uniqid(microtime(), TRUE));
     
    // Headers
    $headers = "From: ".$from."\r\n";
    $headers .= "Mime-Version: 1.0\r\n";
    $headers .= "Content-Type: multipart/mixed;boundary=".$boundary."\r\n";
    $headers .= "\r\n";
     
    // Message
    $msg = "This is a multipart/mixed message\r\n\r\n";
     
    // Pièce jointe
    $file_name = $photo1;
    if (file_exists($folder."/".$file_name))
    {
    	$file_type = filetype($file_name);
    	$file_size = filesize($folder."/".$file_name);
     
    	$handle = fopen($folder."/".$file_name, 'r') or die('File '.$file_name.'can t be open');
    	$content = fread($handle, $file_size);
    	$content = chunk_split(base64_encode($content));
    	$f = fclose($handle);
     
    	$msg .= '--'.$boundary."\r\n";
    	$msg .= "Content-type:image/jpeg;name=".$file_name."\r\n";
    	$msg .= 'Content-transfer-encoding:base64'."\r\n";
    	$msg .= $content."\r\n";
    }
     
    // Fin
    $msg .= '--'.$boundary."\r\n";
     
    // Function mail()
    mail($to, $subject, $msg, $headers);

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Toujours pas resolu. J'en reviens a mon script de depart, qui est celui qui me donne le resultat le moins mauvais: le texte contenu dans le message s'affiche correctement et la photo JPG apparait bien en fichier attache (le nom du fichier et l'icone, avec la taille).

    Probleme: le fichier ne s'ouvre pas. Message d'erreur me faisant comprendre que le fichier est incomplet ou endommage. Chose curieuse: le fichier a un volume environ 30% superieur au fichier de depart. Et le probleme est le meme avec n'importe quel fichier.

    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
    // envoi du mail;
     
    $random_hash = md5(date('r', time())); 
    $headers = "From: ".$from."\r\nReply-To: ".$from; 
    $headers .= "\r\nContent-Type: multipart/mixed; boundary=\"PHP-mixed-".$random_hash."\""; 
    $attachment = chunk_split(base64_encode(file_get_contents($folder."/".$photo1))); 
    ob_start();
    ?> 
    --PHP-mixed-<?php echo $random_hash; ?>  
    Content-Type: multipart/alternative; boundary="PHP-alt-<?php echo $random_hash; ?>" 
     
    --PHP-alt-<?php echo $random_hash; ?>  
    Content-Type: text/plain; charset="iso-8859-1" 
    Content-Transfer-Encoding: 7bit
     
    DEMANDE D'EXPERTISE
     
    De : <?php echo $nom_sl."\n"; ?>
    E-mail : <?php echo $from."\n"; ?>
    Tel. <?php echo $telephone."\n"; ?>
     
    Description : <?php echo $description."\n"; ?>
     
     
     
    --PHP-alt-<?php echo $random_hash; ?>-- 
     
    --PHP-mixed-<?php echo $random_hash; ?>  
    Content-Type: image/jpeg; name=<?php echo $photo1; ?>  
    Content-Transfer-Encoding: base64  
    Content-Disposition: attachment; filename=<?php echo $photo1."\r\n"; ?>
     
    <?php echo $attachment; ?> 
    --PHP-mixed-<?php echo $random_hash; ?>-- 
     
    <?php 
    $message = ob_get_clean(); 
    $mail_sent = @mail( $to, $subject, $message, $headers ); 
    echo $mail_sent ? "Mail sent" : "Mail failed"; 
     
    // fin d'envoi du mail

  6. #6
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    essaye d'envoyer un fichier texte avec ce code pour comparer plus facilement la différence entre le fichier de départ et le fichier reçu.

    si ça ne t'aide pas à régler le problème, je te propose par exemple d'utiliser la librairie PHPmailer :
    http://jcrozier.developpez.com/tutor...eloppeurs/#LIV
    GNAP !

  7. #7
    Invité
    Invité(e)
    Par défaut
    Merci !

    En essayant avec un fichier TXT a la place d'une image, je sais ouvrir le fichier recu mais le texte qu'il contient a ete remplace par le codage MIME ! En faisant un deuxieme essai apres avoir remplace "Content-type: image/jpeg" par "Content-type: text/plain", le resultat est le meme... Bon, si je ne trouve pas dans les minutes qui suivent, je vais suivre le lien que vous m'avez renseigne.

    Edit ------------

    Je n'y comprends rien. Cela vient de marcher avec un fichier. Ensuite j'essaye avec un autre fichier: cela ne marche pas. Je reessaye avec le premier: ca ne marche a nouveau plus!!!!!!! AARRRGGGGHHH

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour. Apres 1 mois d'absence, me revoici avec ce script toujours pas operationnel. J'essaye de m'inspirer de scripts existants pour la partie attachment. Voici la derniere version de mon code. Le probleme est que le mail envoye continet bien le texte mais aucun fichier attache. Je ne vois pas ou est l'erreur...

    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
     
    $file = $dossier.$fichier;
    $file_size = filesize($file);
    $handle = fopen($file, "r");
    $content = fread($handle, $file_size);
    fclose($handle);
    $content = chunk_split(base64_encode($content));
    $uid = md5(uniqid(time()));
    $name = basename($file);
     
    $message = "DEMANDE D'EXPERTISE\n\n";
    $message .= "Nom: $nom\n";
    $message .= "Mail: $from\n";
    $message .= "Tel: $telephone\n\n";
    $message .= "Description:\n $description";
     
    $headers = "From: $nom <$from>\r\n";
    $header .= "MIME-Version: 1.0\r\n";
    $header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n";
    $header .= "This is a multi-part message in MIME format.\r\n";
    $header .= "--".$uid."\r\n";
    $header .= "Content-type:text/plain; charset=iso-8859-1\r\n";
    $header .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
    $header .= $message."\r\n\r\n";
    $header .= "--".$uid."\r\n";
    $header .= "Content-Type: image/jpeg; name=\"".$name."\"\r\n";
    $header .= "Content-Transfer-Encoding: base64\r\n";
    $header .= "Content-Disposition: attachment; filename=\"".$name."\"\r\n\r\n";
    $header .= $content."\r\n\r\n";
    $header .= "--".$uid."--";
     
    mail($to,$subject,$message,$headers);

  9. #9
    Invité
    Invité(e)
    Par défaut
    Et voila, c'est resolu ! A force de chercher, on trouve...
    Merci quand meme a ceux qui ont repondu precedemment pour me conseiller.

  10. #10
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 13
    Points : 12
    Points
    12
    Par défaut
    Bonjour,
    Je n'ai pas saisit la façon dont tu as réglé ton problème.

    Je sais que c'est le base64_encode qui est à l'origine du gonflement du fichier.
    Mais je ne l'utilise pas et mon fichier est tout de même illisible.

    Donc comment as-tu fait ?
    Merci

  11. #11
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Finalement j'ai utilise un autre code. Le voici.
    L'utilisateur doit remplir un formulaire en specifiant ses nom ($nom), adresse email ($from), telephone ($telephone), en decrivant l'objet de sa demande ($description) et en joignant une photo JPEG ($fichier) via le champ "photo" du formulaire, qui sera temporairement stockee dans un repertoire ($dossier) du serveur puis supprimee apres l'envoi du mail.

    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
     
    $to = "xxxxxx@xxxxxxxxxxx.com";
    $subject = "Demande d'expertise";
    $message = "\nDEMANDE D'EXPERTISE\n\n";
    $message .= "Nom: $nom\n";
    $message .= "Mail: $from\n";
    $message .= "Tel: $telephone\n\n";
    $message .= "Description:\n $description\n\n";
     
    $filename=$_FILES["photo"]["name"]; 
    $filetype=$_FILES["photo"]["type"]; 
    $filesize=$_FILES["photo"]["size"]; 
    $filetemp=$_FILES["photo"]["tmp_name"];
    $fp = fopen($dossier.$fichier, "rb"); 
    $file = fread($fp, $photo_size); 
    $file = chunk_split(base64_encode($file)); 
    $num = md5(time()); 
     
    $headers = "From: $nom <$from>\r\n"; 
    $headers .= "MIME-Version: 1.0\r\n"; 
    $headers .= "Content-Type: multipart/mixed; "; 
    $headers .= "boundary=".$num."\r\n"; 
    $headers .= "--$num\r\n"; 
    $headers .= "Message-ID: <".$now." TheSystem@".$_SERVER['SERVER_NAME'].">\r\n"; 
    $headers .= "X-Mailer: PHP v".phpversion()."\r\n";          
    $headers .= "Content-Type: text/plain; charset=iso-8859-1\r\n"; 
    $headers .= "Content-Transfer-Encoding: 8bit\r\n"; 
    $headers .= "".$message."\n"; 
    $headers .= "--".$num."\n";  
    $headers .= "Content-Type:".$photo_type." "; 
    $headers .= "name=\"".$photo_name."\"r\n"; 
    $headers .= "Content-Transfer-Encoding: base64\r\n"; 
    $headers .= "Content-Disposition: attachment; "; 
    $headers .= "filename=\"".$photo_name."\"\r\n\n"; 
    $headers .= "".$file."\r\n"; 
    $headers .= "--".$num."--"; 
     
    mail($to, $subject, $message, $headers); 
    fclose($fp);
    if ($fichier != "") {unlink ("/home/xxxxxxxxx/temp/".$fichier);}

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Toutes versions] Combobox qui ne peut plus être utilisé
    Par SylvainM dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/12/2014, 17h06
  2. [Tk] Tag delete ne peut plus être recréé
    Par dmganges dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 16/07/2014, 08h34
  3. Réponses: 8
    Dernier message: 20/07/2006, 12h30
  4. fichiers attachés a un mail
    Par calimero91 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 28/06/2006, 10h23
  5. [Mail] fichier attache dans un mail
    Par yiannis dans le forum Langage
    Réponses: 5
    Dernier message: 06/10/2005, 14h31

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