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

  FORUM HardWare.fr
  Programmation
  PHP

  Envois de mails avec fichier(s) attache(s)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Envois de mails avec fichier(s) attache(s)

n°1689376
redah75
Posté le 20-02-2008 à 14:52:31  profilanswer
 

Bonjour a tous et a toutes :)
 
Je suis confronte a un gros probleme, cela dure depuis des moiis et des mois mais j'arrive vraiment pas a reperer d'où vient l'erreur.... :??:  
 
j'ai mis en place un systeme de mailing qui fonctionne bien.
on a la possibilite de joindre 1 ou plusieurs fichier au mail que j'envoie.
l'email est bien envoye MAIS CERTAINS fichiers attaches ne s'ouvrent pas. il me dit qu'il est endommage, et on verifiant le poids du fichier, il fait 3Ko en moins par rapport a l'original!!
 
je vous mets un peu de code pour bien comprendre ce que je fais:
 

Code :
  1. $req = mysql_query("SELECT prenom, nom, email... FROM clients WHERE ..." );
  2. while($res = mysql_fetch_array($sel))
  3. {
  4. send_mail($res[email], "mon sujet", "mon message", $delivery, $attach)
  5. }


 
voici en resume ma fonction qui permet d'envoyer un mail :
 

Code :
  1. //$t: destinataire
  2. //$delivery: si on envoie le message avec accuse de reception
  3. //$attach: les nom de fichiers a attacher separes par ~
  4. function send_mail($t, $subject, $message, $delivery, $attach)
  5. {
  6. $boundary = "----iifiir----".md5(time()); // generate the boundary
  7. $headers = "From: Bla bla bla <mailing@domaine.com>\n";
  8. if($delivery)
  9. {
  10.   $headers .= "Disposition-Notification-To: $delivery\n";
  11. }
  12. $headers .= "MIME-Version: 1.0\n";
  13. $headers .= "X-Priority: 1\n";
  14. $headers .= "X-MSMail-Priority: High\n";
  15. $headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\n\n";
  16.    
  17. $msg_mail = "--$boundary\n";
  18. $msg_mail .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";
  19. $msg_mail .= "Content-Transfer-Encoding: 8bit\n\n";
  20. $msg_mail .= "<html>";
  21. $msg_mail .= "<head>";
  22. $msg_mail .= "<style type='text/css'>
  23.    a.link:link, a.link:visited { color: #888888; text-decoration: none; }
  24.   a.link:hover { color: #6666CC; text-decoration: none; }
  25.   .white { color: #FFFFFF; }
  26.   .red { color: #CC3333; }
  27.   .grey { color: #C3C3C3; }
  28.     </style>";
  29. $msg_mail .= "</head>";
  30. $msg_mail .= "<body>";   
  31. $msg_mail .= "<table width='604' cellspacing='1' cellpadding='0' align='center' style='border: 1px solid #9999CC;'>";
  32. $msg_mail .= "<tr><td height='70'<img src='http://www.domaine.com/img/logo_mail.jpg' width='600' height='70' border='0'></td></tr>";
  33. $msg_mail .= "<tr><td height='20'>&nbsp;</td></tr>";
  34. $msg_mail .= "<tr><td>$message</td></tr>";
  35. $msg_mail .= "<tr><td height='20'>&nbsp;</td></tr>";
  36. $msg_mail .= "</table>";
  37. $msg_mail .= "</body>";
  38. $msg_mail .= "</htm>\n\n";
  39. if($attach) // envoie d'un email avec fichier(s) attache(s)
  40. {
  41.   $attaches = explode("~", $attach);
  42.   foreach($attaches as $attached_file)
  43.   {
  44.    $attach_size = filesize($attached_file);
  45.    $attach_name = $attached_file; // get the file name
  46.    $attach_type = display_mime_type($attach_name); // j'ai cree cette fonction pour definir le type de fichier
  47.      
  48.    // read the file and encode it
  49.    //$fp = fopen($attached_file, "r" );
  50.    //$attach_content = fread($fp, $attach_size);
  51.    //fclose($fp);
  52.    $attach_content = file_get_contents($attached_file);
  53.    $attach_content = chunk_split(base64_encode($attach_content));
  54.  
  55.    // attach the file
  56.    $msg_mail .= "--$boundary\n";
  57.    $msg_mail .= "Content-Type: $attach_type; name=\"$attach_name\"\n";
  58.    $msg_mail .= "Content-Transfer-Encoding: base64\n";
  59.    $msg_mail .= "Content-Disposition: inline; filename=\"$attach_name\"\n\n";
  60.    $msg_mail .= $attach_content."\n";
  61.   }
  62. }
  63. $msg_mail .= "--$boundary--\n"; // final boundary
  64.  
  65. $return_failure = "webmaster@domaine.com";
  66. @mail($to, $subject, $msg_mail, $headers, "-f".$return_failure);
  67. }


 
alors, est ce qu'il y a un \n en trop......????? :cry:  
 
Je vous remercie infiniment de votre aide, vous allez me sauver!!
 
Merci,
Reda


Message édité par redah75 le 21-02-2008 à 10:50:43
mood
Publicité
Posté le 20-02-2008 à 14:52:31  profilanswer
 

n°1689951
redah75
Posté le 21-02-2008 à 10:46:51  profilanswer
 

Personne n'a une reponse??? :(

n°1690372
naeh
Posté le 21-02-2008 à 21:29:17  profilanswer
 

c'est le probleme quand on utilise des scripts faits maison comme ta fonction :)
 
je suis sûr que tu en es fier et que t'y tiens énormément, si c'est pas le cas essaye avec phpmailer (il surement tout ce que fait ta fonction et plus encore et surement mieux que ta fonctions (surtout).
 
perso je ne vois pas trop où est le probleme dans ton code, en meme temps c'est un domaine que je ne maitrise pas du tout :D
 
Bonne chance;

n°1690520
redah75
Posté le 22-02-2008 à 10:56:15  profilanswer
 

Bonjour Naeh, et merci pour ta reponse. je ne sais ce qui se passe mais c decevant de ne pas avoir recu enormement de reponses.. :( est ce le sujet qui n'interesse personne???!! :D
 
eh oui, j'aime bien ma fonction maison, je l'ai adapter par rapport a nos besoins...
je v jeter un coup d'oeil sur phpmailer, et j'espere entre temps avoir d'autres reponses...
 
@ bientot

n°1718053
wrksx
Posté le 15-04-2008 à 19:13:37  profilanswer
 

pour plus de réponse il faudrait que tu puisse déterminer quel type (taille, etc) de fichier coince, il faudrait resserrer un peu les mailles du filet si j'ose dire...  
 
Je me demande si il ne manque pas un /n a la fin de la ligne 63 (il faut pas une ligne vide apres les données ??)... je dit ça mais moi non plus je suis pas très calé en mail... =) dit moi ce que t'en pense.


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

  Envois de mails avec fichier(s) attache(s)

 

Sujets relatifs
Perl XSL, ne trouve pas le fichier xslLecture fichier csv
Transfert de fichier de PDA vers serveur sans WifiUpload PHP ok mais fichier déplacé = 0 octets
Remplir un tableau à partir d'un fichier - ifstream -Renommer fichier à l'upload
[Access/ PHP] Exploiter un fichier *.mdeSuppression d'un nombre de fichier donnée
Cherche un script pour afficher un fichier csv[Résolu] Remplacer des caractères par d'autres dans un fichier texte
Plus de sujets relatifs à : Envois de mails avec fichier(s) attache(s)


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