Re: Attaching a pdf in email (no body text displays)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I've attached some comments inline.

Ade Smith wrote:

I am attaching a PDF document to an email, this part works great, however to
get this to work it prevents the text in the body of the message to be
displayed, what am I doing wrong?  Here is the code



$filename = " confirmation.pdf";
if(!($fp = fopen($filename, "r"))):

           $error = "Can't open file";

           echo $error;

           exit;

endif;



$boundary = "b" . md5(uniqid(time()));

$boundary='"'.$boundary.'"';



$attach = fread($fp, filesize($filename));

$attach = chunk_split(base64_encode($attach));



$mime = "from: pdf@xxxxxxxxxx\n";

$mime .= "Content-type: multipart/mixed; boundary=$boundary";



$mime .= "--$boundary\r\n";

$mime .= "Content-type:  application/pdf; name=\"confirmation.pdf\"\r\n";

$mime .= "Content-Transfer-Encoding: base64\r\n\r\n";

$mime .= "Content-Disposition: attachment;\r\n";

$mime .= "\r\n\r\n$attach\n";


It's been while, but shouldn't this line read:

$mime .= "\r\n$attach\r\n";

Just to ensure that no extra characters get included witht he file? I don't think it matters much with PDFs, but it would definitely break other files.

$mime .= "--$boundary\r\n";

$mime .= "Content-Type: text/HTML; charset=iso-8859-1\r\n";

$mime .= "Content-Transfer-Encoding: 7bit\r\n\r\n";

$mime .= "test test test";

$mime .= "--$boundary\r\n";


You forgot the trailing -- here, so this line should read:

$mime .= "--$boundary--\r\n";

Otherwise the mail clients assume there is another part to the MIME message (which defaults to empty). And the last part is always the one that is intended to be viewed. , So it displays the empty one.

mail("user@xxxxxxxxxx","Your Confirmation: $confirmation_number","test test
test test test",$mime);

Once again, it's been awhile, but I believe the best way to do this is to put only the main body headers into the header variable ($mime in this case), and put the parts in the body So the body itself is split into the parts.

This is probably contributing to the problem as well.

Chris

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux