2014-09-29 4 views
0

Я пытаюсь прикрепить два файла максимум, чтобы отправить их по почте, но файлы отправляются по почте в виде двоичного кода, поэтому, когда я открываю полученную почту, я нашел файлы в виде двоичных файлов, вот мой код:Как связать несколько файлов из формы на почту в php?

$files = array(); 

if(is_uploaded_file($_FILES['cv']['tmp_name'])) 

       array_push($files, $_FILES['cv']); 

      if(is_uploaded_file($_FILES['portfolio']['tmp_name'])) 

       array_push($files, $_FILES['portfolio']); 

      $subject = "Contact Mail"; 
        $headers = 'From: '.$email_fromto."\r\n". 
        "subject: {$subject}"; 

      $randomVal = md5(time()); 
      $mimeBoundary = "==Multipart_Boundary_x{$randomVal}x"; 
      $headers .= "\nMIME-Version: 1.0\n"; 
      $headers .= "Content-Type: multipart/mixed;\n" ; 
      $headers .= " boundary=\"{$mimeBoundary}\""; 

      $message = "This is a multi-part message in MIME format.\n\n" . 
      "--{$mimeBoundary}\n" . 
      "Content-Type: text/plain; charset=\"iso-8859-1\"\n" . 
      "Content-Transfer-Encoding: 7bit\n\n" . 
      "From: $sex $fname $lname.\r\n". 
       "Message: {$message}"; 
       $email_fromto = "[email protected]"; 

      foreach($files as $userfile){ 

       $tmpName = $userfile['tmp_name']; 
       $fileType = $userfile['type']; 
       $fileName = $userfile['name']; 

       if(file($tmpName)){ 
        $file = fopen($tmpName,'rb'); 
        $data = fread($file,filesize($tmpName)); 
        fclose($file); 

        $data = chunk_split(base64_encode($data)); 
        $message .= "--{$mimeBoundary}\n" . 
        "Content-Type: {$fileType};\n" . 
        " name=\"{$fileName}\"\n" . 
        "Content-Transfer-Encoding: base64\n\n" . 
        $data . "\n\n" . 
        "--{$mimeBoundary}--\n"; 
       } 
      } 

так где же ошибка в том, что я сделал?

ответ

0

использовать как этот

 // generate a random string to be used as the boundary marker 
    $mime_boundary="==Multipart_Boundary_x".md5(mt_rand())."x"; 

    // now we'll build the message headers 
    $headers = "From: $from\r\n" . 
    "MIME-Version: 1.0\r\n" . 
     "Content-Type: multipart/mixed;\r\n" . 
     " boundary=\"{$mime_boundary}\""; 

    // here, we'll start the message body. 
    // this is the text that will be displayed 
    // in the e-mail 

    $message="This is an example" 



foreach($_FILES as $userfile){ 
     // store the file information to variables for easier access 
     $tmp_name = $userfile['tmp_name']; 
     $type = $userfile['type']; 
     $name = $userfile['name']; 
     $size = $userfile['size']; 

     // if the upload succeded, the file will exist 
     if (file_exists($tmp_name)){ 

     // check to make sure that it is an uploaded file and not a system file 
     if(is_uploaded_file($tmp_name)){ 

      // open the file for a binary read 
      $file = fopen($tmp_name,'rb'); 

      // read the file content into a variable 
      $data = fread($file,filesize($tmp_name)); 

      // close the file 
      fclose($file); 

      // now we encode it and split it into acceptable length lines 
      $data = chunk_split(base64_encode($data)); 
     } 
     } 
     // now we'll insert a boundary to indicate we're starting the attachment 
     // we have to specify the content type, file name, and disposition as 
     // an attachment, then add the file content. 
     // NOTE: we don't set another boundary to indicate that the end of the 
     // file has been reached here. we only want one boundary between each file 
     // we'll add the final one after the loop finishes. 


     $message .= "--{$mime_boundary}\n" . 
      "Content-Type: {$type};\n" . 
      " name=\"{$name}\"\n" . 
      "Content-Disposition: attachment;\n" . 
      " filename=\"{$fileatt_name}\"\n" . 
      "Content-Transfer-Encoding: base64\n\n" . 
     $data . "\n\n"; 
     } 
// here's our closing mime boundary that indicates the last of the message 

    $message.="--{$mime_boundary}--\n"; 

    // now we just send the message 
    if (@mail($to, $subject, $message, $headers)) 

     echo "Mail was Send Sucessfully"; 
    else 
     echo "Failed to send"; 
+0

тех же проблема ... –

Смежные вопросы