如何使用php与pear-mail.php和mime.php连接多个文件


how to attachment multiple file using php with pear mail.php and 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 = "babagusandrian@gmail.com";
    $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是我的英语,我来自印度尼西亚。所以说英语就好了。sry。。。。

我很快重新排列了代码,对此没有任何保证:

<?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 = "babagusandrian@gmail.com";
    $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>';
    }

}

我自己解决了。我能做到…

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 = "babagusandrian@gmail.com";
    $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); }
}