2015-02-18 1 views
0

Я не могу вложить несколько файлов. Если файл вложения больше, чем файлы, электронная почта отправляет всегда 1 файл вложения, но я вложение больше, чем файл.Как вставить несколько файлов, используя php с pear mail.php и mime.php?

if(isset($_POST['upload'])){ 
    include('config.php'); 
    include_once('Mail.php'); 
    include_once('Mail/mime.php'); 
    $allowed_ext = array('jpg','bmp','gif','png','jpeg'); 
    for($i=0; $i<count($_FILES['file']['name']); $i++) { 
    $file_name  = $_FILES['file']['name'][$i]; 
    $file_ext  = strtolower(end(explode('.', $file_name))); 
    $file_size  = $_FILES['file']['size'][$i]; 
    $file_tmp  = $_FILES['file']['tmp_name'][$i]; 
    $username  = $_POST['username']; 
    $judul   = $_POST['judul']; 
    $berita   = $_POST['berita']; 
    $max_size  = 25*1024*1024; 
    $tanggal_kirim = date("Y-m-d H:i:s"); 
    if(in_array($file_ext, $allowed_ext) === true){ 
     if($file_size <= $max_size){ 
      $file_path = "foto/". $_FILES['file']['name'][$i]; 
     move_uploaded_file($file_tmp, "$file_path");} 
    mysql_query("INSERT INTO foto VALUES('', '$username', '$tanggal_kirim', '$judul', '$berita','0')"); 
    } 
    $query = "SELECT email,password_email FROM users where username='$username'"; 
    $sql = mysql_query($query); 
    $data = mysql_fetch_assoc($sql); 

    $subject = $judul; 
    $body = $berita; 
    //mail($to, $subject, $body,$headers); 
    //email tujuan 
    $to = "[email protected]"; 
    $host = "ssl://smtp.gmail.com"; 
    $port = "465"; 
    $from = $useremail = $data['email']; 
    $password = $data['password_email']; 

    $headers = array('From' => $from, 'To' => $to, 'Subject' => $subject); 

    $namafile[$i] = "$file_path/$file_name"; 
    $crlf = "\n"; 
    $mime = new Mail_mime($crlf); 
    $mime->setTXTBody($body); 
    $mime->addAttachment($namafile[$i],'image/jpg'); 

    $body = $mime->get(); 
    $headers = $mime->headers($headers); 

    $smtp = Mail::factory('smtp', array('host' => $host, 
      'port' => $port, 'auth' => true, 
      'username' => $useremail, 'password' => $password)); 

    $mail = $smtp->send($to, $headers, $body); 
    if($mail){ 
     echo '<div class="ok">SUCCESS: Foto terkirim!</div>'; 
    }else{ 
     echo '<div class="error">ERROR: Foto gagal dikirim!</div>'; 
    } 
    } 
} 

Что случилось с моим кодом? пожалуйста помогите. дайте мне решение .... спасибо вам ..... sry для моего английского, им из Индонезии. так что просто лайт говорит по-английски. СРЮ ....

+0

вы отправляете внутри цикла for, так что одно письмо на файл. для отправки каждого файла на одно электронное письмо, которое необходимо изменить для кода, чтобы передача выполнялась после цикла, который добавляет файлы с помощью метода addAttachment –

+0

hmmm .... где делать изменения для цикла? –

ответ

0

я была решена моим сам. я могу это сделать ....

if(isset($_POST['username']) && isset($_POST['judul']) && 
    ($_POST['berita'])) { 
    include('config.php'); 
    include_once('Mail.php'); 
    include_once('Mail/mime.php'); 

    $username  = $_POST['username']; 
    $judul   = $_POST['judul']; 
    $berita   = $_POST['berita']; 
    $tanggal_kirim = date("Y-m-d H:i:s"); 

    $query = "SELECT email,password_email FROM users where username='$username'"; 
    $result = mysql_query($query); 
    list($useremail,$password) = mysql_fetch_row($result); 
    mysql_free_result($result); 

    $from = $useremail; 
    $subject = $judul; 
    $body = $berita; 

    $to = "[email protected]"; 
    $host = "ssl://smtp.gmail.com"; 
    $port = "465"; 

    $crlf = "\n"; 
    $headers = array('From' => $from, 'To' => $to, 'Subject' => $subject); 

    $mime = new Mail_mime($crlf); 
    $mime->setTXTBody($body); 

    $arr_files = array(); 
    $file_path = "foto"; 
    $file_count = 0; 
    for($i=0; $i<count($_FILES['fileAttach']['name']); $i++) { 
     $file_name = $_FILES['fileAttach']['name'][$i]; 
     if(!empty($file_name)) { 
      $file_count++; 
      $file_ext  = strtolower(end(explode('.', $file_name))); 
      $file_tmp  = $_FILES['fileAttach']['tmp_name'][$i]; 
      $file_target = $file_path.'/'.$file_name.''; 
      $file_type  ="image/*"; 
      move_uploaded_file($file_tmp, $file_target); 
      $arr_files[] = $file_target; 
      $mime->addAttachment($file_target,"image/".$file_ext, $file_type); 
     } 
    } 
    $body = $mime->get(); 
    $headers = $mime->headers($headers); 

    $smtp = Mail::factory('smtp', array('host' => $host, 
      'port' => $port, 'auth' => true, 
      'username' => $useremail, 'password' => $password)); 

    $mail = $smtp->send($to, $headers, $body); 

    if($mail){ 
     mysql_query("INSERT INTO foto VALUES('', '$username', '$tanggal_kirim', '$judul', '$berita','$file_count')"); 
     echo '<div class="ok">SUCCESS: Foto terkirim!</div>'; 
    }else{ 
     echo '<div class="error">ERROR: Foto gagal dikirim!</div>'; 
    } 
    // sukses atopun gagal, tetap delete file 
    foreach($arr_files as $namafile) { unlink($namafile); } 
} 
0

я очень быстро переставить код, никаких гарантий по этому поводу:

<?php 

if(isset($_POST['upload'])){ 
    include ('config.php'); 
    include_once ('Mail.php'); 
    include_once ('Mail/mime.php'); 
    $allowed_ext = array('jpg','bmp','gif','png','jpeg'); 



    $query = "SELECT email,password_email FROM users where username='$username'"; 
    $sql = mysql_query($query); 
    $data = mysql_fetch_assoc($sql); 

    $subject = $judul; 
    $body = $berita; 
    //mail($to, $subject, $body,$headers); 
    //email tujuan 
    $to = "[email protected]"; 
    $host = "ssl://smtp.gmail.com"; 
    $port = "465"; 
    $from = $useremail = $data['email']; 
    $password = $data['password_email']; 

    $headers = array('From'=>$from,'To'=>$to,'Subject'=>$subject); 

    $namafile[$i] = "$file_path/$file_name"; 
    $crlf = "\n"; 
    $mime = new Mail_mime($crlf); 
    $mime->setTXTBody($body); 


    for($i = 0 ; $i<count($_FILES['file']['name']) ; $i++){ 
     $file_name = $_FILES['file']['name'][$i]; 
     $file_ext = strtolower(end(explode('.',$file_name))); 
     $file_size = $_FILES['file']['size'][$i]; 
     $file_tmp = $_FILES['file']['tmp_name'][$i]; 
     $username = $_POST['username']; 
     $judul = $_POST['judul']; 
     $berita = $_POST['berita']; 
     $max_size = 25*1024*1024; 
     $tanggal_kirim = date("Y-m-d H:i:s"); 
     if(in_array($file_ext,$allowed_ext)===true){ 
      if($file_size<=$max_size){ 
       $file_path = "foto/".$_FILES['file']['name'][$i]; 
       move_uploaded_file($file_tmp,"$file_path"); 
      } 
      mysql_query("INSERT INTO foto VALUES('', '$username', '$tanggal_kirim', '$judul', '$berita','0')"); 
     } 

     $mime->addAttachment($namafile[$i],'image/jpg'); 


    } 



    $body = $mime->get(); 
    $headers = $mime->headers($headers); 

    $smtp = Mail::factory('smtp',array('host'=>$host,'port'=>$port,'auth'=>true,'username'=>$useremail,'password'=>$password)); 

    $mail = $smtp->send($to,$headers,$body); 
    if($mail){ 
     echo '<div class="ok">SUCCESS: Foto terkirim!</div>'; 
    }else{ 
     echo '<div class="error">ERROR: Foto gagal dikirim!</div>'; 
    } 


} 
+0

спасибо .... решимость .... –