PHP mail attachment is blank
I got the form to accept an attachment and send the attachment but if it's a doc it's blank:
$fileatt = $_FILES['file']['tmp_name']; $fileattType = $_FILES['file']['type']; $fileattName = $_FILES['file']['name']; $file = fopen($fileatt,'rb'); $data = fread($file,filesize($fileatt)); fclose($file); $semi_rand = md5(time()); $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x"; $headers = "from: $email"; $headers .= "\nMIME-Version: 1.0\n" . "Content-Type: multipart/mixed;\n" . " boundary=\"{$mime_boundary}\""; $content = "Info about user"; $content = "This is a multi-part message in MIME format.\n\n" . "--{$mime_boundary}\n" . "Content-Type: text/plain; charset=\"iso-8859-1\"\n" . "Content-Transfer-Enc开发者_JS百科oding: 7bit\n\n" . $content . "\n\n"; $data = chunk_split(base64_encode($data)); $content .= "--{$mime_boundary}\n" . "Content-Type: {$fileattType};\n" . " name=\"{$fileattName}\"\n" . "Content-Disposition: attachment;\n" . " filename=\"{$fileattName}\"\n" . "Content-Transfer-Encoding: base64\n\n" . $data . "\n\n" . "--{$mime_boundary}--\n"; $send = mail( "user@provider.com", "Form", $content, $headers); if($send) header('Location: success page'); else header('Location: fail page');
The email sends correctly, there is an attachment with the correct name, file type, and file size. when it opens it is empty.
I got the tutorial from sitepoint: http://articles.sitep... ... mail-php/5
I tested the files they provide and the same thing happens. Any ideas would be great. thanks everyone!
Why not use a decent library for sending emails?
I strongly suggest you start using a library for sending emails, it eases the process of writing emails and makes the code a lot more transient.
I can vouch for Swiftmailer, an actively developed library with excellent features.
Especially complicated tasks like attachments, inline images and multiple recipients are implemented easily.
I would strongly recommend using a preexisting tool to send emails, such as Swift. There are a lot of caveats that it will take care of for you, and it's quite easy to use.
Welcome to SO.
This is not a direct answer to your question, but I would recommend you use a ready-made mailing class like PHPMailer. It has all the quirks, encoding and attaching functions already built in, which is much less error-prone than doing it by hand. If you want to go that way, maybe this collection of tutorial links on PHPMailer will help you get started.
Perhaps you could use \r\n
instead of those \n\n
Answer with code example is here: http://www.webcheatsheet.com/PHP/send_email_text_html_attachment.php
精彩评论