lundi 14 mai 2012

PHP - Pièces jointes


Après l'exercice précédent qui consistait à générer un fichier pdf, je souhaite envoyer ce même fichier par mail à un ou plusieurs destinataires.

Voici donc le bout de script php qui permettra d'envoyer un mail en y attachant une pièce jointe (mon fichier pdf). Au vu de la complexité de ce bout de code, je ne saurais que trop vous conseiller d'englober tout cela dans une sympathique petite fonction.

// email fields: to, from, subject, and so on
$from = "destinateur@email";
$subject = "Sujet du mail";
$message = "Message du mail.";
$file = "fichier.pdf";
$to = "destinataire@email";


// Construction du message et découpage mime
$headers = "From: $from";$semi_rand = md5(time()); 
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x"; 


// Attachment 
$headers .= "\nMIME-Version: 1.0\n" . "Content-Type: multipart/mixed;\n" . " boundary=\"{$mime_boundary}\"";


// multipart boundary 
$message = "--{$mime_boundary}\n" . "Content-Type: text/plain; charset=\"iso-8859-1\"\n" .      "Content-Transfer-Encoding: 7bit\n\n" . $message . "\n\n";


// Préparation attachment
$message .= "--{$mime_boundary}\n";
$fp =    @fopen($file,"rb");
$data =    @fread($fp,filesize($file));
@fclose($fp);
$data = chunk_split(base64_encode($data));
$message .= "Content-Type: application/octet-stream; name=\"".basename($files)."\"\n" .  "Content-Description: ".basename($files)."\n" . "Content-Disposition: attachment;\n" . " filename=\"".basename($files)."\"; size=".filesize($files).";\n" . "Content-Transfer-Encoding: base64\n\n" . $data . "\n\n";


$message .= "--{$mime_boundary}--";
$returnpath = "-f" . $sendermail;
$ok = @mail($to, $subject, $message, $headers, $returnpath);

Voila, n'en profitez pas pour envoyer du spam petits malins ^^

Aucun commentaire:

Enregistrer un commentaire