ci dessous la fonction de mail ke j'utilise pr le moment (mixe de plusieures sources glaner un peut partout)....
serveur web local (apache + mysql + php)
je souhaite envoyer des newsletter en html avec 1 ou plusieures PJ en utilisant le smtp de wanadoo.
- le mail en html ...OK
- l'envoi en "masse" de mail (ds la limite de mon serveur biensur) ...OK
- l'envoi de de pièces jointes (meme 1 je suis pas difficile) ...MARCHE PAS
la je péte un plomb !
deja, dès k'il y a une PJ, j'en ai automatiquement une autre "en bonus" (ATT0000123.txt ou du style) : je me demande bien ce k'elle vient faire la ???? (mais encore une fois je suis pas difficile, si il fo, il fo !)
ensuite et C la le gros pb : seul les PJ de type .txt passe bien, tout le reste (pdf, doc, jpg) semble corrompu !
Si kk1 peut m'aider ou au moins m'aiguiller, je suis preneur :p
ps: meme en faisant correspondre le content-type de la PJ avec son type (image/jpeg <-> jpeg), ca passe pas.
Merci
Joule
function mail_attach($to, $from, $subject, $message, $files,$lb="\n") { // $to Recipient // $from Sender (like "email@domain.com" or "Name <email@domain.com>") // $subject Subject // $message Content // $files hash-array of files to attach // $lb is linebreak characters... some mailers need \r\n, others need \n $lb = "\n"; $mime_boundary = "<<<:" . md5(uniqid(mt_rand(), 1)); $header = "From: ".$from; if(is_array($files)) { $header.= $lb; $header.= "MIME-Version: 1.0".$lb; $header.= "Content-Type: multipart/mixed;".$lb; $header.= " boundary=\"".$mime_boundary."\"".$lb; $content = "This is a multi-part message in MIME format.".$lb.$lb; $content.= "--".$mime_boundary.$lb; $content.= "Content-Type: text/html; charset=\"iso-8859-1\"".$lb; $content.= "Content-Transfer-Encoding: 7bit".$lb.$lb; } $content.= $message.$lb; if(is_array($files)) { $content.= "--".$mime_boundary.$lb; foreach($files as $filename=>$filelocation) { if(is_readable($filelocation)) { $data = chunk_split(base64_encode(implode("", file($filelocation)))); $content.= "Content-Disposition: attachment;".$lb; $content.= "Content-Type: 'Application/Octet-Stream;"; $content.= " name=\"".$filename."\"".$lb; $content.= "Content-Transfer-Encoding: base64".$lb.$lb; $content.= $data.$lb; $content.= "--".$mime_boundary.$lb; } } } if(mail($to, $subject, $content, $header)) { return TRUE; } return FALSE; }
|