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

  FORUM HardWare.fr
  Programmation
  PHP

  PB Envoie de mail avec pièce jointe

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

PB Envoie de mail avec pièce jointe

n°1517657
Metabolicm​an
Posté le 21-02-2007 à 14:59:38  profilanswer
 

Bonjour
Comme vous pouvez lire dans l'intitulé du message j'ai un pb avec un envoi de mail avec pièce jointe.
Le mail s'envoi bien, je reçois bien le message avec la pièce jointe mais celle-ci ne comporte aucune extension et  
aucun nom alors que je pense les avoir spécifié.
 
J'utilise une classe trouver sur le web que j'ai légèrement modifié:
 
Script de la classe :

Code :
  1. class clmail
  2. {
  3. var $parts;
  4. var $to;
  5. var $from;
  6. var $headers;
  7. var $subject;
  8. var $body;
  9. // constructeur
  10. function clmail()
  11. {
  12. $this->parts = array();
  13. $this->to = "";
  14. $this->from = "";
  15. $this->subject = "";
  16. $this->body = "";
  17. $this->headers = "";
  18. }
  19. // attache un fichier au message
  20. function attach($message,$name,$ctype)
  21. {
  22. $this->parts[] =
  23. array (
  24. "ctype" => $ctype,
  25. "message" => $message,
  26. "encode" => $encode,
  27. "name" => $name
  28. );
  29. // fin de fonction
  30. }
  31. // fonction utilisee pour contruire le message MIME
  32. // utilisee depuis build_multipart()
  33. function build_message($part)
  34. {
  35. $message = $part[ "message"];
  36. $message = chunk_split(base64_encode($message));
  37. $encoding = "base64";
  38. return "Content-Type: ".$part[ "ctype"].
  39. ($part[ "name"]? "; name = \"".$part[ "name"]. "\"" : "" ).
  40. "\nContent-Transfer-Encoding: $encoding\n\n$message\n";
  41. }
  42. // compose le message MIME
  43. // utilisee depuis send()
  44. function build_multipart()
  45. {
  46. $boundary = "b".md5(uniqid(time()));
  47. $multipart = "Content-Type: multipart/mixed; boundary = $boundary\n\nThis is a MIME encoded message.\n\n--$boundary";
  48. for($i = sizeof($this->parts) - 1; $i >= 0; $i--)
  49. {
  50. $multipart .= "\n".$this->build_message($this->parts[$i]). "--$boundary";
  51. }
  52. return $multipart.= "--\n";
  53. }
  54. // envoie le message
  55. // derniere fonction a appeler
  56. function send()
  57. {
  58. $mime = "";
  59. // parametres optionnels
  60. if (!empty($this->from)) $mime .= "From: ".$this->from. "\n";
  61. if (!empty($this->headers)) $mime .= $this->headers. "\n";
  62. if (!empty($this->body)) $this->attach($this->body, "", "text/plain" );
  63. // entete MIME
  64. $mime .= "MIME-Version: 1.0\n".$this->build_multipart();
  65. // envoi du message
  66. mail($this->to, $this->subject, "", $mime);
  67. }
  68. }; // fin de la classe

 
 
Appel de la classe et son utilisation :

Code :
  1. include("class/mail.php" );
  2.   // ouverture et lecture du fichier
  3.   $fichier = fread(fopen("Sauv_BDD/".date("d-m-Y" ).".txt", "r" ), filesize("Sauv_BDD/".date("d-m-Y" ).".txt" ));
  4.   // instanciation de la classe
  5.   $mail = new clmail();
  6.   // parametres
  7.   $mail->to = "metabolicman@gmail.com"; // Adresse email de reception
  8.   $mail->subject = "Sauvegarde BDD du ".date("d-M-Y" ); // Sujet
  9.   $mail->body = "Ci-joint une sauvegarde de la base de donnée du jour."; // Corps du message
  10.   $mail->from = "Intranet-ekinoxe@ekinoxe.com"; // Adresse email de l'expediteur (optionnel)
  11.   $mail->headers = "Date: "; // Entetes supplementaires (optionnel)
  12.   $mail->attach("$fichier", "BDD",".txt" ); // fichier attache (optionnel)
  13.   // envoi du message
  14.   $mail->send();

mood
Publicité
Posté le 21-02-2007 à 14:59:38  profilanswer
 

n°1517668
FlorentG
Unité de Masse
Posté le 21-02-2007 à 15:03:48  profilanswer
 

T'as mis '.txt' dans le paramètres ctype. Ca serait pas plutôt 'text/plain' ?
 
 
 
PS. Pourquoi met-tu "$fichier" comme premier paramètre de attache, $fichier suffit, pas besoin de parser une string en plus...

n°1517682
Metabolicm​an
Posté le 21-02-2007 à 15:08:00  profilanswer
 

j'ai fait les modif que tu m'as dit et cette fois je n'est plus de pièce jointe il m'affiche la pièce jointe directement dans le mail.

n°1517882
FlorentG
Unité de Masse
Posté le 21-02-2007 à 17:52:00  profilanswer
 

Là alors c'est la classe clmail qui ne fait pas ça bien :/


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

  PB Envoie de mail avec pièce jointe

 

Sujets relatifs
[PHP] La fonction mail() ... me rappelle plus ...[php] envoi de mail de confirmation, suppression si > 24h
[html] mailto + modification adresse mail [Résolu]Probleme securite fonction mail php
Mail avec image incluse sans pièce jointePouvez vous m'aider sur la fonction mail () de php ?
[Divers] Lotus Notes envoi d'un mail avec un sujet videFonction mail
Plus de sujets relatifs à : PB Envoie de mail avec pièce jointe


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