benamoubeach tivuplai | 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 :
- <?php
- /* Photomatik
- *
- * Auteurs: Benjamin SLAKMON - benjamin@slakmon.net
- * FAY Matthieu - matttyeux1902@wanadoo.fr
- * Création : 23/02/2005
- * Dernière mise à jour : 24/02/2005
- *
- * Classe Mail :
- * Permet d'envoyer un mail, à des étudiants ou à des groupes
- * avec ou sans pièces jointes.
- */
- class Mail
- {
- var $subject;
- var $message;
- var $headers;
- var $from;
- var $to;
- var $boundary;
- /* constructeur vide pcke jte fais les fesses */
- function Mail($subject,$message,$from,$type='plain')
- {
- $this->boundary = "-----=".md5(uniqid(rand()));
- $this->subject = $subject;
- $this->from = $from;
- $this->to = array();
- $this->add_message("--$this->boundary\n" );
- $this->add_header("MIME-Version: 1.0\n" );
- $this->add_header("Content-Type: multipart/mixed; boundary=\"$this->boundary\"\n" );
- $this->add_message("Content-Type: text/$type; charset=\"iso-8859-1\"\n" );
- $this->add_message("Content-Transfer-Encoding:8bit\n" );
- $this->add_message("\n" );
- $this->add_message($message);
- }
- function add_header($header)
- {
- $this->headers .= $header;
- }
- function add_message($message)
- {
- $this->message .= $message;
- }
-
-
- function add_destinataire($mail)
- {
- if(!is_array($mail))
- {
- if(!in_array($mail,$this->to))
- {
- $this->to[] = $mail;
- }
- }
- else
- {
- foreach($mail as $key => $value)
- {
- if(!in_array($value,$this->to))
- {
- $this->to[] = $value;
- }
- }
- }
- }
-
- function add_file($file)
- {
- $fp = fopen($_FILES[$file]['tmp_name'], "rb" );
- $attachment = fread($fp, filesize($_FILES[$file]['tmp_name']));
- fclose($fp);
- $attachment = chunk_split(base64_encode($attachment));
- $filename = $_FILES[$file]['name'];
- $type = $_FILES[$file]['type'];
- $this->add_message("\n--$this->boundary\n" );
- $this->add_message("Content-Transfer-Encoding: base64\n" );
- $this->add_message("Content-Disposition: attachment; filename=\"$filename\"\n" );
- $this->add_message('Content-Type: '.$type.'; name="'.$filename.'"'."\n" );
- $this->add_message($attachment."\n\n\n" );
- //$this->message = "--$this->boundary\n";
- }
- /* envoi le mail */
- function print_send_mail()
- {
- $bcc = implode(",",$this->to);
- $this->add_header("BCC: $bcc \n" );
- $this->add_header("\nFrom: $this->from \n" );
- if(mail("",$this->subject,$this->message,$this->headers))
- {
- echo "mail bien envoyé";
- }
- else
- {
- echo "mail foiré";
- }
- }
- }
- ?>
|
|