2010-08-30 2 views
0

Je suis relativement nouveau sur php.La pièce jointe PDF apparaît dans Gmail mais Outlook refuse de l'ouvrir

J'ai écrit un script qui envoie un email avec une pièce jointe pdf à un utilisateur et une confirmation à un collègue. Tout fonctionne correctement dans les clients de messagerie Web tels que Gmail, mais la pièce jointe au format PDF ne s'ouvre pas lorsqu'elle est reçue dans Outlook. Il ajoute également une autre pièce jointe appelée "ATT0159.txt" qui est complètement vide.

Voici le code:

<?php 
$pdf = $_GET['pdf']; 
$product = $_GET['product']; 

$username = $_POST['Name']; #get name 
$useraddress = $_POST['Email']; #get user email address 

$subjectUser = $product . " PDF brochure from Specifile on-line"; 

$to = "[email protected]"; # recipient 
$subject = "Confirmation: PDF Request - " . $product; #subject 
$message = "The following person has requested the brochure - " . $product . "\n<br/>" . $username . " [ " . $useraddress . " ] "; #message 

$attachment = $_SERVER['DOCUMENT_ROOT'] . "\\" . $pdf; 
$attachment_type = "application/pdf"; 
$attachment_name = "brochure.pdf"; 

#open, read, then close the file 
$fp = fopen($attachment, 'rb'); 
$file = fread($fp, filesize($attachment)); 
fclose($fp); 

#create boundary string 
$num = md5(time()); 
$str = "==Multipart_Boundary_x{$num}x"; 

#encode data for safe transit 
$file = chunk_split(base64_encode($file)); 

#define user header 
$headers = "MIME-version: 1.0\r\n"; 
$headers .= "Content-type: multipart/mixed;\r\n"; 
$headers .= " boundary=\"{$str}\"\r\n"; 
$headers .= "From: Specifile on-line<[email protected]> \r\n"; 

#define confirmation header 
$Confirmheaders = "MIME-version: 1.0\r\n"; 
$Confirmheaders .= "Content-type: text/html;"; 
$Confirmheaders .= " charset=\"UTF-8\"\r\n"; 
$Confirmheaders .= "From: Specifile on-line<[email protected]> \r\n"; 

#create message for user 
$messageUser = "This is a multi-part message in MIME format\r\n"; 
$messageUser .= "--{$str}\r\n"; 
$messageUser .= "Content-type: text/html; charset=\"UTF-8\"\r\n"; 
$messageUser .= "Content-Transfer-Encoding: 8bit\r\n"; 
$messageUser .= "Hi " . $username . ", <p>The brochure you requested is attatched.</p> \r\n\n"; 
$messageUser .= "--{$str}\r\n"; 

#define non text attachment 
$messageUser .= "Content-Type: {$attachment_type}; "; 
$messageUser .= "name=\"{$attachment_name}\"\r\n"; 
$messageUser .= "Content-Disposition: attachment; "; 
$messageUser .= "filename=\"{$attachment_name}\"\r\n"; 
$messageUser .= "Content-Transfer-Encoding: base64\r\n"; 
$messageUser .= "$file\r\n\n"; 
$messageUser .= "--{$str}"; 

mail($useraddress,$subjectUser,$messageUser,$headers); 
mail($to,$subject,$message,$Confirmheaders); 

?> 

Répondre

0

Pas une vraie réponse à votre question, mais avez-vous envisagé d'utiliser une classe de diffusion ready-made comme SwiftMailer? Il construit le message en plusieurs parties et ajoute les pièces jointes pour vous.

+0

SwiftMailer a fonctionné avec brio! Merci beaucoup! –

Questions connexes