Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/06/2008, 15h48   #1
Membre habitué
 
Inscription : août 2007
Messages : 639
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 639
Points : 105
Points : 105
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 :
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
malabarbe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2008, 02h56   #2
Membre émérite
 
Inscription : septembre 2007
Messages : 951
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 951
Points : 948
Points : 948
- 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.
batataw est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2008, 10h03   #3
Membre habitué
 
Inscription : août 2007
Messages : 639
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 639
Points : 105
Points : 105
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 ?
malabarbe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2008, 11h21   #4
Membre émérite
 
Inscription : septembre 2007
Messages : 951
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 951
Points : 948
Points : 948
Tu as ajouté un it à la fin de ton Encoding, peux-tu le supprimer pour voir
Code :
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.
batataw est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2008, 12h27   #5
Membre habitué
 
Inscription : août 2007
Messages : 639
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 639
Points : 105
Points : 105
Non, cela ne change rien
idem si je supprime cette ligne !
malabarbe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2008, 03h12   #6
Membre émérite
 
Inscription : septembre 2007
Messages : 951
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 951
Points : 948
Points : 948
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.
batataw est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h25.


 
 
 
 
Partenaires

Hébergement Web