2013-04-08 3 views
0

Я пытаюсь работать с FPDF и прикрепить полученный файл к электронному письму. Я видел этот пост Email PDF Attachment with PHP Using FPDF, и данный ответ работает, когда вы отправляете электронное письмо мне и просматриваете в Thunderbird. Вот пример кода Дано:Вложение электронной почты FPDF и внешний вид

<?php 
require('lib/fpdf/fpdf.php'); 

$pdf = new FPDF('P', 'pt', array(500,233)); 
$pdf->AddFont('Georgiai','','georgiai.php'); 
$pdf->AddPage(); 
$pdf->Image('lib/fpdf/image.jpg',0,0,500); 
$pdf->SetFont('georgiai','',16); 
$pdf->Cell(40,10,'Hello World!'); 

// email stuff (change data below) 
$to = "[email protected]"; 
$from = "[email protected]"; 
$subject = "send email with pdf attachment"; 
$message = "<p>Please see the attachment.</p>"; 

// a random hash will be necessary to send mixed content 
$separator = md5(time()); 

// carriage return type (we use a PHP end of line constant) 
$eol = PHP_EOL; 

// attachment name 
$filename = "test.pdf"; 

// encode data (puts attachment in proper format) 
$pdfdoc = $pdf->Output("", "S"); 
$attachment = chunk_split(base64_encode($pdfdoc)); 

// main header 
$headers = "From: ".$from.$eol; 
$headers .= "MIME-Version: 1.0".$eol; 
$headers .= "Content-Type: multipart/mixed; boundary=\"".$separator."\""; 

// no more headers after this, we start the body! // 

$body = "--".$separator.$eol; 
$body .= "Content-Transfer-Encoding: 7bit".$eol.$eol; 
$body .= "This is a MIME encoded message.".$eol; 

// message 
$body .= "--".$separator.$eol; 
$body .= "Content-Type: text/html; charset=\"iso-8859-1\"".$eol; 
$body .= "Content-Transfer-Encoding: 8bit".$eol.$eol; 
$body .= $message.$eol; 

// attachment 
$body .= "--".$separator.$eol; 
$body .= "Content-Type: application/octet-stream; name=\"".$filename."\"".$eol; 
$body .= "Content-Transfer-Encoding: base64".$eol; 
$body .= "Content-Disposition: attachment".$eol.$eol; 
$body .= $attachment.$eol; 
$body .= "--".$separator."--"; 

// send message 
mail($to, $subject, $body, $headers); 

?> 

Однако при отправке и смотреть в перспективе (2007) он создает сообщение в качестве вложения Aswell, это делать с кодом или Outlook/

Любая помощь оценили.

Ян

ответ

0

ИМО это не имеет смысла иметь Это MIME закодированное сообщение. как содержание части; обычно такое предложение предшествует первому разделителю mime, чтобы информировать любого пользователя почтового устройства без возможностей MIME, что представляют собой следующие строки. По сути, у вас есть почта с двумя текстовыми частями, один простой текст (Это сообщение с кодировкой MIME.) и один html (см. В приложении.) в многоцелевой/смешанный контейнер. Если бы это был multipart/alternative один, почтовый считыватель выбрал бы один из них для отображения, но таким образом читатель мог бы сомневаться в том, что показывать.

Таким образом, я бы предложил сократить

$body = "--".$separator.$eol; 
$body .= "Content-Transfer-Encoding: 7bit".$eol.$eol; 
$body .= "This is a MIME encoded message.".$eol; 

в

$body = "This is a MIME encoded message.".$eol.$eol; 
Смежные вопросы