Вложение электронной почты FPDF и внешний вид

Я пытаюсь работать с FPDF и прикрепляю полученный файл к электронному письму. Я видел этот пост Отправить вложение PDF по электронной почте с помощью PHP с использованием FPDF и данный ответ работает при отправке электронного письма самому себе и просмотре в Thunderbird. Вот приведенный пример кода:

 <?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);

?>

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

Любая помощь приветствуется.

Ян


person snookian    schedule 08.04.2013    source источник


Ответы (1)


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

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

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

to

$body = "This is a MIME encoded message.".$eol.$eol;
person mkl    schedule 08.04.2013