2013-02-24 4 views
0

У меня проблема, я бы хотел отправить файл (Photoshop, .gif и т. Д.) По электронной почте с помощью PHP. Я отправляю данные из документа HTML в следующий файл PHP. Проблема: я получаю электронную почту, но файл поврежден. Любая идея, почему это не работает?Пропустить файл по почте() PHP

$to = '[email protected]'; 
    $subject = 'Order'; 

    $name = strip_tags($_POST['name']); 
    $email = strip_tags($_POST['email']); 
    $plz = strip_tags($_POST['plz']); 
    $city = strip_tags($_POST['city']); 
    $street = strip_tags($_POST['street']); 
    $nr = strip_tags($_POST['nr']); 

    $plzdelivery = strip_tags($_POST['plz-delivery']); 
    $citydelivery = strip_tags($_POST['city-delivery']); 
    $streetdelivery = strip_tags($_POST['street-delivery']); 
    $nrdelivery = strip_tags($_POST['nr-delivery']); 

    $buttonsize = strip_tags($_POST['button-size']); 
    $count = strip_tags($_POST['count']); 

    $message = "Name: ".$name." Email: ".$email." Plz: ".$plz." Stadt: ".$city." Strasse: ".$street." Hnr: ".$nr." Button: ".$buttonsize." Anzahl: ".$count; 

    $type = $_FILES['file']['type']; 
    $attachment = chunk_split(base64_encode(file_get_contents($_FILES['file']['tmp_name']))); 
    $filename = $_FILES['file']['name']; 

    $boundary =md5(date('r', time())); 

    $headers = "From: [email protected]\r\nReply-To: [email protected]"; 
    $headers .= "\r\nMIME-Version: 1.0\r\nContent-Type: multipart/mixed; boundary=\"_1_$boundary\""; 

    $message="This is a multi-part message in MIME format. 
--_1_$boundary 
Content-Type: multipart/alternative; boundary=\"_2_$boundary\" 

--_2_$boundary 
Content-Type: text/plain; charset=\"iso-8859-1\" 
Content-Transfer-Encoding: 7bit 

$message 

--_2_$boundary-- 
--_1_$boundary 
Content-Type: application/octet-stream; name=\"$filename\" 
Content-Transfer-Encoding: base64 
Content-Disposition: attachment 

$attachment 
--_1_$boundary--"; 

    mail($to, $subject, $message, $headers); 
+1

Если вы настаиваете на использовании такого громоздкого кода для отправки писем, то, пожалуйста, подумайте об этом сами. Мы здесь не для того, чтобы накладывать фрагменты случайных почтовых/mime-handicraft фрагментов из Интернета. Все остальные могут использовать PHPMailer или SwiftMailer, для которых есть встроенная поддержка. – mario

+2

'mail()' бесполезный мусор. никогда не используйте его, если это вообще возможно. –

+0

, поэтому вы отправляете только строку, а не файл. вы можете прочитать здесь о отправке почты через php http://webcheatsheet.com/PHP/send_email_text_html_attachment.php – Eugen

ответ

0

Короткий ответ: Даже не пытайся.

PHP's mail() функция очень очень короткий сверху особенности. Если вы даже подумываете о попытке отправить вложения, используя его, у вас будет много разочарования и потрачено впустую.

Лучший ответ, который я могу вам дать, это использовать стороннюю библиотеку. Есть несколько хороших. Зачем тратить несколько недель вашего времени на то, что не будет достаточно хорошим, если другие уже потратили годы на то, чтобы сделать это за вас и получить правильное решение.

Мое предложение было бы phpMailer, но несколько других существует.