Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1443 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  un mail avec fichier joint qui ne fonctionne pas...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

un mail avec fichier joint qui ne fonctionne pas...

n°1029514
xkamui
Their Destiny Was Foreordained
Posté le 30-03-2005 à 11:25:09  profilanswer
 

j'ai essayé le script de www.toutestfacile.com... et pourtant, ça ne fonctionne qu'a moitié...
 
je m'explique : lorsque je fait un copié collé de leur code en mettant le fichier 'monfichier.gif' dans le même reoertoire (racine du site) il m'envoi bien le mail, avec le fichier dedans, qui fait bien ses 19Ko, mais impossible de l'afficher... à croire que le fichier est corrompu...
 
un peu d'aide serait apprécié... merci
 
@+ Kamui [:xtc]

mood
Publicité
Posté le 30-03-2005 à 11:25:09  profilanswer
 

n°1029536
Berceker U​nited
PSN : berceker_united
Posté le 30-03-2005 à 11:39:40  profilanswer
 
n°1029726
xkamui
Their Destiny Was Foreordained
Posté le 30-03-2005 à 14:15:22  profilanswer
 

bah j'ai lu ton super post (vraiment hein...) et j'ai même copié ton code permettant d'envoyer plusieurs fichiers joints... ça me fait le même topo... les fichiers sont bien présent, mais impossible d'afficher les images...

n°1029729
Berceker U​nited
PSN : berceker_united
Posté le 30-03-2005 à 14:17:00  profilanswer
 

xkamui a écrit :

bah j'ai lu ton super post (vraiment hein...) et j'ai même copié ton code permettant d'envoyer plusieurs fichiers joints... ça me fait le même topo... les fichiers sont bien présent, mais impossible d'afficher les images...


Peux-tu m'envoyer le mail ? Je te passe mon mail en mp.


Message édité par Berceker United le 30-03-2005 à 14:17:52
n°1029739
xkamui
Their Destiny Was Foreordained
Posté le 30-03-2005 à 14:23:52  profilanswer
 

ok no prob... c fait :)


Message édité par xkamui le 30-03-2005 à 14:25:44
n°1029752
Berceker U​nited
PSN : berceker_united
Posté le 30-03-2005 à 14:36:00  profilanswer
 

Je vais tester mon script pour savoir d'ou vien le probleme. Je sais que l'histoire d'envoy de plusieurs piece jointe est assez space.

n°1029764
xkamui
Their Destiny Was Foreordained
Posté le 30-03-2005 à 14:44:11  profilanswer
 

mais même avec un ça marche pas...

n°1029766
Berceker U​nited
PSN : berceker_united
Posté le 30-03-2005 à 14:44:40  profilanswer
 

En faite le script fonctionne mais j'ai oublié de dire qu'il fallait creer un répertoire tmpimg a la racine du fichier. je corrige le script.


Message édité par Berceker United le 30-03-2005 à 14:47:21
n°1029770
Berceker U​nited
PSN : berceker_united
Posté le 30-03-2005 à 14:46:53  profilanswer
 

Ton probleme est du au faite qu'il te manque l'extention dans ton fichier


Message édité par Berceker United le 30-03-2005 à 14:47:00
n°1029805
xkamui
Their Destiny Was Foreordained
Posté le 30-03-2005 à 15:07:31  profilanswer
 

j'ai bien regardé le script... toutes les extentions sont marquées...
 
j'ai temporairement mis en commentaire l'option de suppression des images uploadées dans le rep `tmpimg` (crée à la racine) et les fichier dedans sont parfaitement lisibles (essais avec fichiers png).
 
J'ai même fait un `print_r($arrNameFile[$i]);` et on lit bien les fichiers avec leurs extentions.
 
mais dès que le fichier est lu et parsé en base64, ça merde et on ne peut pas lire les fichiers envoyée dans le logiciel de mail...

mood
Publicité
Posté le 30-03-2005 à 15:07:31  profilanswer
 

n°1029807
Berceker U​nited
PSN : berceker_united
Posté le 30-03-2005 à 15:09:53  profilanswer
 

xkamui a écrit :

j'ai bien regardé le script... toutes les extentions sont marquées...
 
j'ai temporairement mis en commentaire l'option de suppression des images uploadées dans le rep `tmpimg` (crée à la racine) et les fichier dedans sont parfaitement lisibles (essais avec fichiers png).
 
J'ai même fait un `print_r($arrNameFile[$i]);` et on lit bien les fichiers avec leurs extentions.
 
mais dès que le fichier est lu et parsé en base64, ça merde et on ne peut pas lire les fichiers envoyée dans le logiciel de mail...


J'ai bien regardé le contenu du mail et il est bien présent le fichier. mais il y a une différence entre le mien et le tien c'est qu'il manque un saut de ligne. entre le nom du fichier et le debut du contenu en base64

n°1029820
xkamui
Their Destiny Was Foreordained
Posté le 30-03-2005 à 15:17:22  profilanswer
 

tu veux dire que ça :  
$msg .= "Content-Type: " . $arrType[$i] . "; \r";  
$msg .= "name=\"" . $arrNameFile[$i] . "\"\r\n";
 
devient ça :  
$msg .= "Content-Type: " . $arrType[$i] . "; \r\n";  
$msg .= "name=\"" . $arrNameFile[$i] . "\"\r\n";
 
j'éspère que non parceque j'ai essayé et ça marche pas...


Message édité par xkamui le 30-03-2005 à 15:18:12
n°1029862
Berceker U​nited
PSN : berceker_united
Posté le 30-03-2005 à 15:36:02  profilanswer
 

Code :
  1. $msg .= "--$boundary\r\n";
  2.     $msg .= "Content-Type: ".$arrType[$i]."; \r";
  3.     $msg .= "name=\"".$arrNameFile[$i]."\"\r\n";
  4.     $msg .= "Content-Transfer-Encoding: base64\r\n";
  5.     $msg .= "Content-Disposition: inline;\r\n filename=\"".$arrNameFile[$i]."\"\r\n";
  6.     $msg .= $attachment . "\r\n";

n°1029881
xkamui
Their Destiny Was Foreordained
Posté le 30-03-2005 à 15:47:28  profilanswer
 

ça à pas l'air de fonctionner mieux, je t'ai renvoyé un mail avec tes scripts...

n°1030751
xkamui
Their Destiny Was Foreordained
Posté le 31-03-2005 à 10:17:19  profilanswer
 

un p'tit up...  [:yoyoz]

n°1030754
xkamui
Their Destiny Was Foreordained
Posté le 31-03-2005 à 10:19:09  profilanswer
 

Donc, voici ce que donne mes deux fichiers :  
 
Le premier fichier, le formulaire :

Code :
  1. <?php
  2. $nbFile = 3;
  3. echo "
  4. <html>
  5. <body>
  6. <form action=\"mail.php\" method=\"POST\" enctype=\"multipart/form-data\">
  7. <br /><br />
  8. <table style=\"border:1px solid #000000\" align=\"center\">
  9. <tr>
  10.   <td colspan=\"2\" class=\"en-tete\">Envoyer vos informations concernant le produit</td>
  11. </tr>
  12. <tr>
  13.   <td colspan=\"2\"><textarea name=\"message\"></textarea></td>
  14. </tr>
  15. ";
  16. for($i = 0; $i < $nbFile; $i++)
  17. {
  18. echo "
  19.      <tr>
  20.        <td>Fichier image " . ($i + 1) . " :</td>
  21.        <td><input type=\"file\" name=\"fichier" . $i . "\" value=\"\">
  22.      </tr>
  23. ";
  24. }
  25. echo "
  26. <tr>
  27.   <td align=\"center\" colspan=\"2\"><input type=\"submit\" name=\"action\" value=\"Envoyer\"></td>
  28. </tr>
  29. </table>
  30. <input type=\"hidden\" name=\"nbfile\" value=\"" . $nbFile . "\">
  31. </form>
  32. </body>
  33. </html>
  34. ";
  35. ?>


 
et le deuxième fichier, qui traite les données :

Code :
  1. <?php
  2. // Définition des fonctions
  3. function get_extension($filename)
  4. {
  5.    $parts = explode('.',$filename);
  6.    $last = count($parts) - 1;
  7.    $ext = $parts[$last];
  8.    return $ext;
  9. }
  10. if($_SERVER['REQUEST_METHOD'] == 'POST')
  11. {
  12. // Définition des variables
  13. $isConform        = false;
  14. $attachment       = array();
  15. $arrNameFile      = array();
  16. $arrSource        = array();
  17. $arrExtension     = array();
  18. $arrType          = array();
  19. $arrInfoManu      = array();
  20. $arrExtensionCTRL = array('jpg','jpeg','bmp','psd','png','gif','tif','tiff');
  21. $boundary = "-----=".md5(uniqid(rand()));
  22. $extensionTemp    = '';
  23. $file             = '';
  24. $attachment       = '';
  25. $destinataire     = 'grondin.marc@msa45.msa.fr';
  26. $from             = 'votre mail';
  27. $reponse          = 'votre mail réponse';
  28. $sujet            = 'Votre sujet';
  29. $repertoire       = 'tmpimg'; //Répertoire ou ce trouverons les fichiers attachées.
  30. $fp               = null;
  31. $type             = 'text/plain';
  32. $message          = trim($_POST['message']);
  33. // Traitement des fichier
  34. if($_POST['action'] == 'Envoyer')
  35. {
  36.  for($i = 0; $i < $_POST['nbfile']; $i++)
  37.  {
  38.   $extensionTemp = get_extension($_FILES['fichier' . $i]['name']);
  39.   if($_FILES['fichier' . $i]['name'] != '')
  40.   {
  41.    if(in_array(strtolower($extensionTemp), $arrExtensionCTRL))
  42.    {
  43.     $arrNameFile[$i] = $_FILES['fichier'.$i]['name'];
  44.     $arrSource[$i]   = $_FILES['fichier'.$i]['tmp_name'];
  45.     $isConform       = true;
  46.    }
  47.    else
  48.    {
  49.     $isConform       = false;
  50.    }
  51.   }
  52.  }
  53. }
  54. //Redirection dans le cas ou il y a une extension non valide.
  55. if($isConform == false)
  56. {
  57.  header('Location:contact.php?erreur=true');
  58.  exit();
  59. }
  60. //Boucle sur le nombre de fichier valide.  
  61. for($i = 0;$i < count($arrNameFile); $i++)
  62. {
  63.  copy($arrSource[$i], $repertoire.'/'.$arrNameFile[$i]);
  64.  $arrExtension[$i] = strtolower(get_extension($arrNameFile[$i]));
  65.  if     ($arrExtension[$i] == 'gif')                                $arrType[$i] = 'image/gif';
  66.  else if($arrExtension[$i] == 'bmp')                                $arrType[$i] = 'image/bmp';
  67.  else if($arrExtension[$i] == 'png')                                $arrType[$i] = 'image/png';
  68.  else if($arrExtension[$i] == 'psd')                                $arrType[$i] = 'image/psd';
  69.  else if($arrExtension[$i] == 'jpg' || $arrExtension[$i] == 'jpeg') $arrType[$i] = 'image/jpeg';
  70.  else if($arrExtension[$i] == 'tif' || $arrExtension[$i] == 'tiff') $arrType[$i] = 'image/tiff';
  71. }
  72. // Construction de l'entête  
  73. $header = "MIME-Version: 1.0\r\n";
  74. $header .= "Content-Type: multipart/mixed; boundary=\"" . $boundary . "\"\r\n";
  75. $header .= "\r\n";
  76. $msg  = "Je vous informe que ceci est un message au format MIME 1.0.\r\n";
  77. $msg .= "--" . $boundary . "\r\n";
  78. $msg .= "Content-Type: " . $type . "; charset=\"iso-8859-1\"\r\n";
  79. $msg .= "Content-Transfer-Encoding:8bit\r\n";
  80. $msg .= "\r\n";
  81. $msg .="===================VOTRE MESSAGE===================\r\n\r\n";
  82. $msg .= $message;
  83. $msg .= "\r\n";
  84. // Ajout des images en fichiers joints
  85. for($i = 0;$i < count($arrNameFile); $i++)
  86. {
  87.  $file = $repertoire . '/' . $arrNameFile[$i];
  88.  $fp = fopen($file, 'rb');
  89.  $attachment = fread($fp, filesize($file));
  90.  fclose($fp);
  91.  $attachment = chunk_split(base64_encode($attachment));
  92.  $msg .= "--" . $boundary . "\r\n";
  93.  $msg .= "Content-Type: " . $arrType[$i] . "; \r";
  94.  $msg .= "name=\"" . $arrNameFile[$i] . "\"\r\n";
  95.  $msg .= "Content-Transfer-Encoding: base64\r\n";
  96.  $msg .= "Content-Disposition: inline;\r\n filename=\"" . $arrNameFile[$i] . "\"\r\n";
  97.  $msg .= $attachment . "\r\n";
  98.  $msg .= "\r\n";
  99.  $msg .= "\r\n\r\n";
  100.  unlink($file);
  101. }
  102. $msg .= "--" . $boundary . "--\r\n";
  103. echo (mail($destinataire, $sujet , $msg, "Reply-to: " . $reponse . "\r\nFrom: " . $from . "\r\n" . $header)) ? "OK" : "ERREUR";
  104. }
  105. ?>


 
en fait, je ne vois pas du tout l'erreur.. un peu d'aide ??

n°1030771
Berceker U​nited
PSN : berceker_united
Posté le 31-03-2005 à 10:35:28  profilanswer
 

j'ai essayé en copiant le même script qui est là et ça fonctionne.

n°1030780
xkamui
Their Destiny Was Foreordained
Posté le 31-03-2005 à 10:44:59  profilanswer
 

ça viendrai du fait que je suis en local ??

n°1030781
Berceker U​nited
PSN : berceker_united
Posté le 31-03-2005 à 10:45:43  profilanswer
 

xkamui a écrit :

ça viendrai du fait que je suis en local ??


Je suis en local aussi. j'ai même réussi a l'envoyer sur hotmail.

n°1030783
xkamui
Their Destiny Was Foreordained
Posté le 31-03-2005 à 10:49:06  profilanswer
 

tu crois que ça pourrais alors venir de mon provider et de sa configuiration du smtp ??

n°1030788
Berceker U​nited
PSN : berceker_united
Posté le 31-03-2005 à 10:52:09  profilanswer
 

xkamui a écrit :

tu crois que ça pourrais alors venir de mon provider et de sa configuiration du smtp ??


Je ne pense pas parce que je recevais tes mail et je voyais bien dans le code source du mail le contenu des pieces jointe. change de serveur smtp.

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  un mail avec fichier joint qui ne fonctionne pas...

 

Sujets relatifs
Fichier .properties (Struts)Renommer un fichier Excel sous VBA Access
fichier .kokfichier properties
écrire le contenu d un fichier dans un multiset[VB.NET] Envoie de fichier avec socket !!
Sélection d'un fichier dans une IHM !! (sous vc++ 6)VB - Ouverture d'un fichier Word d'Excel
[Python] Visualisation de fichier HTMLLecture d'un fichier texte contenu dans un JAR
Plus de sujets relatifs à : un mail avec fichier joint qui ne fonctionne pas...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR