0

ウェブサイトでpdfファイルを作成することに成功しました。私がやりたいのは、そのpdfを電子メールの添付ファイルとして送信することです。これまでのところ、ファイルは正常に添付されているようですが、添付ファイルのアクロバット リーダーを開こうとすると、次のエラー メッセージが表示されます。

Acrobat could not open 'example2.pdf' because it is either not a supported type or because the file has been damaged (for example, it was sent as an email attachment and wasn't correctly decoded)

このエラーメッセージは的を射ていると思います。以下は私のコードですが、何を変更する必要があるか知っている人はいますか? よろしくお願いします:)

$to = "me@domain"; 
$from = "me@domain.com"; 
$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 = "example.pdf";
// encode data (puts attachment in proper format)
$attachment = chunk_split(base64_encode("/include/pdf.php?reportid=849980"));
// main header (multipart mandatory)
$headers  = "From: ".$from.$eol;
$headers .= "MIME-Version: 1.0".$eol; 
$headers .= "Content-Type: multipart/mixed; boundary=\"".$separator."\"".$eol.$eol; 
$headers .= "Content-Transfer-Encoding: 7bit".$eol;
$headers .= "This is a MIME encoded message.".$eol.$eol;
// message
$headers .= "--".$separator.$eol;
$headers .= "Content-Type: text/html; charset=\"iso-8859-1\"".$eol;
$headers .= "Content-Transfer-Encoding: 8bit".$eol.$eol;
$headers .= $message.$eol.$eol;
// attachment
$headers .= "--".$separator.$eol;
$headers .= "Content-Type: application/octet-stream; name=\"".$filename."\"".$eol; 
$headers .= "Content-Transfer-Encoding: base64".$eol;
$headers .= "Content-Disposition: attachment".$eol.$eol;
$headers .= $attachment.$eol.$eol;
$headers .= "--".$separator."--";
// send message
mail($to, $subject, "", $headers);
4

1 に答える 1

0
$filename = "example.pdf";
// encode data (puts attachment in proper format)
$attachment = chunk_split(base64_encode("/include/pdf.php?reportid=849980"));

あなたの問題のようです。添付ファイルはpdfのように見えますが、代わりにphpページです...また、pdfのファイルコンテンツをバイナリ(rb)で読み込む必要があります。

$filename = 'example.pdf';  
$fileloc = '/path/to/pdf/'.$filename;   

$filehandle = fopen($fileloc, 'rb');
$data = fread($filehandle, filesize($fileloc));
fclose($filehandle);                

$attachment = chunk_split(base64_encode($data)); 
于 2012-09-24T21:02:45.543 に答える