2016-11-22 9 views
0

こんにちは、追加することはできません添付ファイル

私は私の電子メール内の添付ファイルを送信することはできませんが、ウェブサイトから送信するが、それは添付ファイルをご覧くださいませ。送信する電子メールに添付ファイルを追加するにはどうすればよいですか。

--451b4ac97a84a2205e1d116ef096f765 のContent-Type: は、私のようなテキストを参照ください "画像/ JPEGを;名=" testbeeld.jpg」 コンテンツディスポジション:添付ファイル;ファイル名= "testbeeld.jpg" のContent-Transfer-エンコード:base64で X-添付-ID:私の体で66045

それに見てみるための おかげ

if($_POST && isset($_FILES['File_upload'])) 
{ 
$recipient_email = $_POST['email2']; //recepient 
$from_email   = $_POST['email']; //from email using site domain. 
$subject   = $_POST['title']; //email subject line 

$sender_email = filter_var($_POST["email"], FILTER_SANITIZE_STRING); //capture sender email 
$sender_message = filter_var($_POST['message'], FILTER_SANITIZE_STRING); //capture message 
$attachments = $_FILES['File_upload']; 

$file_count = count($attachments['name']); //count total files attached 
$boundary = md5("keukenaanbod.nl"); 

if($file_count > 0){ //if attachment exists 
    //header 
    $headers = 'MIME-Version: 1.0\r\n'. 
       'From: [email protected]' . "\r\n". 
       'Reply-To: ' . $sender_email . '' . "\r\n" . 
       'Cc: ' . $sender_email . '' . "\r\n" . 
       'X-Mailer: PHP/' . phpversion(). 
       'Content-Type: multipart/mixed; boundary = $boundary\r\n\r\n'; 


    //message text 
    $body .= "Er is gereageerd op jouw keuken aanvraag, reageer op deze mail om in contact te komen:\r\n\"" . $sender_message . "\"\r\n\r\n\r\n"; 

    //attachments 
    for ($x = 0; $x < $file_count; $x++){  
     if(!empty($attachments['name'][$x])){ 

      if($attachments['error'][$x]>0) //exit script and output error if we encounter any 
      { 
       $mymsg = array(
       1=>"The uploaded file exceeds the upload_max_filesize directive in php.ini", 
       2=>"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form", 
       3=>"The uploaded file was only partially uploaded", 
       4=>"No file was uploaded", 
       6=>"Missing a temporary folder"); 
       die($mymsg[$attachments['error'][$x]]); 
      } 

      //get file info 
      $file_name = $attachments['name'][$x]; 
      $file_size = $attachments['size'][$x]; 
      $file_type = $attachments['type'][$x]; 

      //read file 
      $handle = fopen($attachments['tmp_name'][$x], "r"); 
      $content = fread($handle, $file_size); 
      fclose($handle); 
      $encoded_content = chunk_split(base64_encode($content)); //split into smaller chunks (RFC 2045) 

      $body .= "--$boundary\r\n"; 
      $body .="Content-Type: $file_type; name=" . $file_name . "\r\n"; 
      $body .="Content-Disposition: attachment; filename=" . $file_name . "\r\n"; 
      $body .="Content-Transfer-Encoding: base64\r\n"; 
      $body .="X-Attachment-Id: ".rand(1000,99999)."\r\n\r\n"; 
      $body .= $encoded_content; 
     } 
    } 

}else{ //send plain email otherwise 
      $headers = "MIME-Version: 1.0" . "\r\n". 
         "Content-type:text/html;charset=UTF-8" . "\r\n". 
         'From: [email protected]' . "\r\n". 
         'Reply-To: ' . $sender_email . '' . "\r\n" . 
         'Cc: ' . $sender_email . '' . "\r\n" . 
         'X-Mailer: PHP/' . phpversion(); 
      $body = $sender_message; 
} 

$sentMail = @mail($recipient_email, $subject, $body, $headers); 
if($sentMail) //output success or failure messages 
{  
    header('Location: /verzenden-gelukt?id='. $id .''); 
}else{ 
    die('Email kon helaas niet verzonden worden, u dient direct uit te zoeken wat er gaande is!'); 
} 
} 


} 
+3

phpmailerの方がずっと使いやすくなりました –

+0

おそらく、phpmailerは使用したくありません。以前はうまくいきましたが、何かが変わったため、何を理解する必要があります。 –

+1

http://stackoverflow.com/questions/12301358/send-attachments-with-php-mail 3秒Googleで;-) –

答えて

0

私は、次のコードを使用して、この意志の出力ファイルを私の問題を解決しました。添付ファイルとして(複数ファイルが許可されている場合)、追加された添付ファイルの上にプレーンテキストを設定します。

誰かがそれを使いたいと思っています。

if($_POST && isset($_FILES['File_upload'])) 
{ 
$recipient_email = $_POST['email2']; //recepient 
$from_email   = $_POST['email']; //from email using site domain. 
$subject   = $_POST['title']; //email subject line 

$sender_email = filter_var($_POST["email"], FILTER_SANITIZE_STRING); //capture sender email 
$sender_message = filter_var($_POST['message'], FILTER_SANITIZE_STRING); //capture message 
$attachments = $_FILES['File_upload']; 

$file_count = count($attachments['name']); //count total files attached 
$boundary = md5(time()); 
$eol = "\r\n"; 

if($file_count > 0){ //if attachment exists 
    //header 
    $headers = 'From: [email protected]<[email protected]>' . $eol; 
    $headers .= 'Reply-To: '. $sender_email . '<' . $sender_email . '>' . $eol; 
    $headers .= 'Cc: ' . $sender_email . $eol; 
    $headers .= "Message-ID: <" . time() . " [email protected]" . $_SERVER['SERVER_NAME'] . ">" . $eol; 
    $headers .= "X-Mailer: PHP v" . phpversion() . $eol; 
    $headers .= 'MIME-Version: 1.0' . $eol; 
    $headers .= "Content-Type: multipart/mixed; boundary=\"" . $boundary . "\"" . $eol; 


    //message text 
    //$body = "--" . $boundary . $eol; 
    //$body .= "Content-Type: text/plain; charset=\"iso-8859-1\"" . $eol; 
    //$body .= "Content-Transfer-Encoding: 8bit" . $eol; 
    //$body .= "Er is gereageerd op jouw keuken aanvraag, reageer op deze mail om in contact te komen:". $eol . $sender_message . $eol . $eol; 

    //attachments 
    for ($x = 0; $x < $file_count; $x++){  
     if(!empty($attachments['name'][$x])){ 

      //get file info 
      $file_name = $attachments['name'][$x]; 
      $file_size = $attachments['size'][$x]; 
      $file_type = $attachments['type'][$x]; 

      //read file 
      $handle = fopen($attachments['tmp_name'][$x], "r"); 
      $content = fread($handle, $file_size); 
      fclose($handle); 
      $encoded_content = chunk_split(base64_encode($content)); //split into smaller chunks (RFC 2045) 

      $body = "--". $boundary . $eol; 
      $body .= "Content-type:text/plain; charset=iso-8859-1" . $eol; 
      $body .= "Content-Transfer-Encoding: 7bit" . $eol . $eol; 
      $body .= "Er is gereageerd op jouw keuken aanvraag, reageer op deze mail om in contact te komen:". $eol . $sender_message . $eol . $eol; 
      $body .= "--" . $boundary . $eol; 
      $body .= "Content-Type: " . $file_type. "; name=\"" . $file_name . "\"" . $eol; 
      $body .= "Content-Transfer-Encoding: base64" . $eol; 
      $body .= "Content-Disposition: attachment; filename=\"" . $file_name . "\"" . $eol . $eol; 
      $body .= $encoded_content . $eol . $eol; 
     } 
    } 

}else{ //send plain email otherwise 
      $headers = "MIME-Version: 1.0" . "\r\n". 
         "Content-type:text/html;charset=UTF-8" . "\r\n". 
         'From: [email protected]' . "\r\n". 
         'Reply-To: ' . $sender_email . '' . "\r\n" . 
         'Cc: ' . $sender_email . '' . "\r\n" . 
         'X-Mailer: PHP/' . phpversion(); 
      $body = $sender_message; 
} 

$sentMail = @mail($recipient_email, $subject, $body, $headers); 
if($sentMail) //output success or failure messages 
{  
    header('Location: /verzenden-gelukt?id='. $id .''); 
}else{ 
    die('Email kon helaas niet verzonden worden, u dient direct uit te zoeken wat er gaande is!'); 
} 
} 


} 
関連する問題