2012-10-23 2 views
1

J'ai le code suivant pour envoyer des mails avec une pièce jointe, et j'ai du mal à l'adapter pour envoyer 2 pièces jointes au lieu d'une seule. Je dois envoyer un .docx et un .pdfPHP Mail avec 2 pièces jointes

Une idée sur ce que je devrais modifier?

function mail_attachment($filename1, $path, $mailto, $from_mail, $from_name, $replyto, $subject, $message) { 
     $file = $path.$filename; 
     $file_size = filesize($file); 
     $handle = fopen($file, "r"); 
     $content = fread($handle, $file_size); 
     fclose($handle); 
     $content = chunk_split(base64_encode($content)); 
     $uid = md5(uniqid(time())); 
     $name = basename($file); 
     $header = "From: ".$from_name." <".$from_mail.">\r\n"; 
     $header .= "Reply-To: ".$replyto."\r\n"; 
     $header .= "MIME-Version: 1.0\r\n"; 
     $header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n"; 
     $header .= "This is a multi-part message in MIME format.\r\n"; 
     $header .= "--".$uid."\r\n"; 
     $header .= "Content-type:text/plain; charset=iso-8859-1\r\n"; 
     $header .= "Content-Transfer-Encoding: 7bit\r\n\r\n"; 
     $header .= $message."\r\n\r\n"; 
     $header .= "Content-Type: application/msword; name=\"".$filename."\"\r\n"; // use different content types here 
     $header .= "Content-Transfer-Encoding: base64\r\n"; 
     $header .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n"; 
     $header .= $content."\r\n\r\n"; 
     mail($mailto, $subject, "", $header); 
    } 

Et voici comment je l'appelle ..

mail_attachment("attachment.docx", "","[email protected]","[email protected]","Admin","[email protected]","Subject","Mail body"); 
+3

Ne créez pas vos propres emails mime. Utilisez PHPmailer ou Swiftmailer. ils peuvent faire tout cela avec beaucoup moins de code/tracas. –

+0

idem. Y at-il une raison pour laquelle vous voulez utiliser une solution développée à la maison pour cela? – Sheena

Répondre

3

je vous recommande d'utiliser PHPMailer - une bibliothèque stable qui est facile à utiliser et fera tout votre travail! http://code.google.com/a/apache-extras.org/p/phpmailer/

$mail = new PHPMailer(); 
$mail->IsMail(); 

$mail->AddAddress("[email protected]"); 
$mail->Subject = "Test 1"; 
$mail->Body = "Test 1 of PHPMailer."; 

Vous pourrez ajouter des pièces jointes dans une chaîne:

$mail->AddAttachment('/home/mywebsite/public_html/file1.zip', 'file1.zip'); 
$mail->AddAttachment('/home/mywebsite/public_html/file2.zip', 'file2.zip'); 

Il est plus facile et plus souple. Ne fais pas le travail du singe. C'est déjà fait pour toi!
Les programmeurs doivent être paresseux! Tapez moins de code)

+0

Je suppose que ma vieille école xD merci, je le fais – SpiderQ

+0

Voici quelques documents http://www.askapache.com/php/phpfreaks-eric-rosebrocks-phpmailer-tutorial.html#Preparing_PHPMailer J'espère que vous le trouverez intéressant. –

+0

@SpiderQ - la vieille école est très bien, mais l'une des principales raisons pour lesquelles la nouvelle école existe est parce que c'est * plus facile *. Vous devez admettre que l'écriture de cinq lignes de code lisible et fiable est préférable à l'écriture de 30 lignes de code illisible et facilement cassé? – SDC

Questions connexes