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

Envois de mails avec fichier(s) attache(s) - PHP - Programmation

Marsh Posté le 20-02-2008 à 14:52:31    

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
Reply

Marsh Posté le 20-02-2008 à 14:52:31   

Reply

Marsh Posté le 21-02-2008 à 10:46:51    

Personne n'a une reponse??? :(

Reply

Marsh Posté le 21-02-2008 à 21:29:17    

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;

Reply

Marsh Posté le 22-02-2008 à 10:56:15    

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

Reply

Marsh Posté le 15-04-2008 à 19:13:37    

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.

Reply

Sujets relatifs:

Leave a Replay

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