fichier joint dans email mal transmis

fichier joint dans email mal transmis - PHP - Programmation

Marsh Posté le 09-03-2005 à 14:39:56    

Hello les gens voila mon probleme est tres simple, j'ai fait cette class mail en cours rapidos . Quand j'envoie un mail sans pieces jointes, ca marche. Quand j'envoie un mail avec une ou plusieurs pieces jointes, le problème est que les fichiers sont splités bizarrement et donc ils ne peuvent pas être lu car pas transmis en intégrité. Si qqn d'assez calé niveau headers pouvait m'aider, ca srai cool pcke ca msoule jvoi pa trop le pb en fait
 
 

Code :
  1. <?php
  2. /* Photomatik  
  3. *  
  4. * Auteurs:        Benjamin SLAKMON - benjamin@slakmon.net  
  5. *                FAY Matthieu - matttyeux1902@wanadoo.fr  
  6. * Création : 23/02/2005  
  7. * Dernière mise à jour : 24/02/2005  
  8. *  
  9. * Classe Mail :  
  10. * Permet d'envoyer un mail, à des étudiants ou à des groupes  
  11. * avec ou sans pièces jointes.  
  12. */
  13. class Mail
  14. {
  15.     var $subject;
  16.     var $message;
  17.     var $headers;
  18.     var $from;
  19.     var $to;
  20.     var $boundary;
  21.     /* constructeur vide pcke jte fais les fesses */
  22.     function Mail($subject,$message,$from,$type='plain')
  23.     {
  24.         $this->boundary = "-----=".md5(uniqid(rand()));
  25.         $this->subject = $subject;
  26.         $this->from = $from;
  27.         $this->to = array();
  28.         $this->add_message("--$this->boundary\n" );
  29.         $this->add_header("MIME-Version: 1.0\n" );
  30.         $this->add_header("Content-Type: multipart/mixed; boundary=\"$this->boundary\"\n" );
  31.         $this->add_message("Content-Type: text/$type; charset=\"iso-8859-1\"\n" );
  32.         $this->add_message("Content-Transfer-Encoding:8bit\n" );
  33.         $this->add_message("\n" );
  34.         $this->add_message($message);
  35.     }
  36.     function add_header($header)
  37.     {
  38.         $this->headers .= $header;
  39.     }
  40.     function add_message($message)
  41.     {
  42.         $this->message .= $message;
  43.     }
  44.    
  45.    
  46.     function add_destinataire($mail)
  47.     {
  48.         if(!is_array($mail))
  49.         {
  50.             if(!in_array($mail,$this->to))
  51.             {
  52.                 $this->to[] = $mail;
  53.             }
  54.         }
  55.         else
  56.         {
  57.             foreach($mail as $key => $value)
  58.             {
  59.                 if(!in_array($value,$this->to))
  60.                 {
  61.                     $this->to[] = $value;
  62.                 }
  63.             }
  64.         }
  65.     }
  66.    
  67.     function add_file($file)
  68.     {
  69.         $fp = fopen($_FILES[$file]['tmp_name'], "rb" );
  70.         $attachment = fread($fp, filesize($_FILES[$file]['tmp_name']));
  71.         fclose($fp);
  72.         $attachment = chunk_split(base64_encode($attachment));
  73.         $filename = $_FILES[$file]['name'];
  74.         $type = $_FILES[$file]['type'];
  75.         $this->add_message("\n--$this->boundary\n" );
  76.         $this->add_message("Content-Transfer-Encoding: base64\n" );
  77.         $this->add_message("Content-Disposition: attachment; filename=\"$filename\"\n" );
  78.         $this->add_message('Content-Type: '.$type.'; name="'.$filename.'"'."\n" );
  79.         $this->add_message($attachment."\n\n\n" );
  80.         //$this->message = "--$this->boundary\n";  
  81.     }
  82.     /* envoi le mail */
  83.     function print_send_mail()
  84.     {
  85.         $bcc = implode(",",$this->to);
  86.         $this->add_header("BCC: $bcc \n" );
  87.         $this->add_header("\nFrom: $this->from \n" );
  88.         if(mail("",$this->subject,$this->message,$this->headers))
  89.         {
  90.             echo "mail bien envoyé";   
  91.         }
  92.         else
  93.         {
  94.             echo "mail foiré";
  95.         }
  96.     }
  97. }
  98. ?>

Reply

Marsh Posté le 09-03-2005 à 14:39:56   

Reply

Marsh Posté le 11-03-2005 à 13:34:30    

ya personne capable de m'aider ???

Reply

Marsh Posté le 11-03-2005 à 14:03:40    

benamoubeach a écrit :

ya personne capable de m'aider ???


met nous le contenu d'un mail 'foiré', on a pas le temps de tester ta classe

Reply

Marsh Posté le 11-03-2005 à 19:42:50    

jcomprend rien  
 
sur mon autre pc sous Easyphp 1.7 ( :sweat: ) ca foirait et la sous wamp5 sur mon autre pc , ca tourne au poil
 
merci kan meme soju donc la classe est bonne youhou
 
 
ptet ke c le passage de php4 a php5 ki a fait ca

Reply

Marsh Posté le 11-03-2005 à 20:14:06    

t'as l'intention de réinventer la roue avec ta class ? parceque ce genre de trucs existent en version stable depuis longtemps...


---------------
http://www.hardware404.com L'actualité hardware francophone en continu
Reply

Marsh Posté le 11-03-2005 à 21:02:59    

oui mais bon si toi ca t'amuses de recopier des trucs deja fait et de ne jamais évoluer c'est ton probleme . C'est sur je peux tre bien copier une classe mail, une class mysql et meme carrément prendre phpbb et phpnuke comme ca j'aurais un site et bah besoin de programmer et jpourrais faire genre je suis trop une bete en mettant mon nom dans le footer . Ya aussi une autre catégorie de personnes qui préfèrent etre aidées pour réussir quelque chose plutot que de pomper sur tout le monde et faire croire qu'ils ont tout fait tout seul . Maintenant si toi tu kiff aller sur php scripts, c ton probleme ca n'engage que toi j'irais pas te faire un procès mais je dis juste que moi je préfère programmer moi meme mes  scripts php, au moins je comprend ce que je fais et quand je modifie ou j'améliore, je sais ou modifier et quoi faire. T'as qu'a dire aux mecs qui apprennent le php "faites pas ce script ya deja des mecs qui l'ont fait avec 10 lignes alors que vous le faites en 150 lignes vous servez a rien".Je me considere encore en phase d'apprentissage du php étant donné que je ne code que depuis 1an et demi donc je te prierai de ne pas juger mon travail si tu ne connais pas la réponse. Au passage, on t'a jamais dit que l'amabilité ca fonctionnait aussi sur les forums et que c'est pas en étant désagréable que tu passeras pour le dieu vivant du code en faisant semblant de tout savoir sur tout.


Message édité par benamoubeach le 11-03-2005 à 21:05:02
Reply

Marsh Posté le 11-03-2005 à 22:37:46    

Dans ce cas commence par virer wamp5 et install sur une partition de ton deuxième PC avec une Debian,Apache,PHP,MySQL,PhpMyadmin.
Comme ça tu bossera sur un environement "propre".
Parceque là ton problème est apparu en changant de machin/pack sous Windows ce qui devrai t'inquièté.
Ton projet doit être installé sur quel type de machine à terme ?
 
PS : je sais que ça t'énerve  :D mais si d'autre personnes que toi tombent sur ton topic à la recherche d'une solution pour envoyer des fichiers liés par mail etc en PHP : http://phpmailer.sourceforge.net/


Message édité par prblsouris le 11-03-2005 à 22:40:29

---------------
http://www.hardware404.com L'actualité hardware francophone en continu
Reply

Marsh Posté le 11-03-2005 à 23:19:07    

debian ca msoul de tout configurer, sinon sous windows javai dja pris apache/php/mysql/phpmyadmin mais apres format la flemme. Mon projet sera installé sur des pc itinérants en fait ca changera en fonction du pc.
 
Non ca m'énerve pas si tu donnes une url, jvoyai juste pas lintéret de me critiquer c tout

Reply

Marsh Posté le 11-03-2005 à 23:43:38    

ta classe marchera pas si t'as pas ou mal défini les parametres d'envoi de mail dans ton php.ini ou via ini_set ;)


Message édité par Profil supprimé le 11-03-2005 à 23:44:01
Reply

Marsh Posté le 12-03-2005 à 12:35:38    

ouep mais ca c bon :) merci bien

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed