2016-11-22 3 views
0

Guten Tag,Kann nicht Attachments hinzufügen

Ich kann nicht Anhänge in meine E-Mails senden von der Website, aber es macht die Anlage zu sehen. Wie kann ich den Anhang zu den gesendeten E-Mails hinzufügen? ich sehe Text wie:

--451b4ac97a84a2205e1d116ef096f765 Content-Type: "image/jpeg; name =" testbeeld.jpg“ Content-Disposition: attachment; filename = "testbeeld.jpg" Inhalt-Transfer- Encoding: base64 X-Geschiebe-Id:.. 66045

in meinem Körper Vielen Dank für einen Blick in sie nehmen

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 ist viel einfacher, für diese –

+0

Ja wahrscheinlich zu verwenden, aber ich will nicht zu verwenden phpmailer. Dies hat vorher funktioniert, etwas verändert und ich muss herausfinden, was. –

+1

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

Antwort

0

löste ich mein Problem, indem sie den folgenden Code verwenden, wird diese Ausgabe eine Datei als Anhang (mehrere Dateien sind erlaubt) und plain text über dem hinzugefügten Anhang, wenn gesetzt.

Hoffe jemand hat eine gute Verwendung dafür.

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!'); 
} 
} 


} 
Verwandte Themen