2017-07-24 1 views
0

Hie,comment ajouter plusieurs images en tant que pièce jointe dans CodeIgniter au lieu de dossier Zip

j'ai créé la fonction d'exportation qui obtient toutes les données utilisateur et les images contenant un dossier zip et l'envoie à email id respectif.

fonction

mail fonctionne correctement, mais je veux des photos dans l'exportation de rapport en tant que pièces jointes dans l'e-mail, au lieu d'un fichier zip

d'entendre est mon contrôleur report.php

fclose($handle); 
if (!file_exists(REPORT_CSV_PATH)) { 
    mkdir(REPORT_CSV_PATH, 0755,true); 
    } 
$new_file_path = REPORT_CSV_PATH.time()."visit_entries.csv"; 
copy($file_path,$new_file_path); 
unlink("assets/upload/site_visit_pictures.zip"); 
$z = new ZipArchive(); 
$z->open("assets/upload/site_visit_pictures.zip", ZIPARCHIVE::CREATE); 
    $this->folderToZip("assets/upload/mail_entries_images/", $z); 
$z->close(); 



// Send mail 
    $email_template = get_email_template("Mark Water Plumbing - Visit Entries"); 
    $email_subject = $email_template->email_subject; 
    $email_from = $email_template->email_from; 
    $email_body = $email_template->email_body; 
    $email_body = str_replace("{LINK}", base_url()."content/download_sitevisit_pictures", $email_body); 
    $this->load->library('email'); 
    $this->email->from($email_from, $this->config->item('site_name')); 
    $this->email->to($this->input->post('email')); 
    $this->email->subject($this->config->item('site_name') . " : " . $email_subject); 
    $this->email->message($email_body); 
    $this->email->attach($new_file_path); 
    if($this->email->send()) 
    { 
    $dir ="assets/upload/mail_entries_images/"; 
    $this->rrmdir($dir); 
    $this->session->set_userdata("toast_message", "Email with visit entries data sent succesfully."); 
    redirect("admin/reports/"); 
    } 
    else 
    { 
    $dir ="assets/upload/mail_entries_images/"; 
    $this->rrmdir($dir); 
    $this->session->set_userdata("toast_error_message", "Error in sending mail."); 
    redirect("admin/reports/"); 
    } 


} 

function rrmdir($dir) { 
    if (is_dir($dir)) { 
    $objects = scandir($dir); 
    foreach ($objects as $object) { 
     if ($object != "." && $object != "..") { 
     if (filetype($dir."/".$object) == "dir") 
     $this->rrmdir($dir."/".$object); 
     else unlink ($dir."/".$object); 
    } 
    } 
    reset($objects); 
    rmdir($dir); 
} 
} 

public function folderToZip($folder, &$zipFile, $subfolder = null) { 

    // we check if $folder has a slash at its end, if not, we append one 
    $folder .= end(str_split($folder)) == "/" ? "" : "/"; 
    $subfolder .= end(str_split($subfolder)) == "/" ? "" : "/"; 
    // we start by going through all files in $folder 
    $handle = opendir($folder); 
    while ($f = readdir($handle)) { 
    if ($f != "." && $f != "..") { 
     if (is_file($folder . $f)) { 
     // if we find a file, store it 
     // if we have a subfolder, store it there 
     if ($subfolder != null) 
      $zipFile->addFile($folder . $f, $subfolder . $f); 
     else 
      $zipFile->addFile($folder . $f); 
     } elseif (is_dir($folder . $f)) { 
       // if we find a folder, create a folder in the zip 
     $zipFile->addEmptyDir($f); 
       // and call the function again 
     $this->folderToZip($folder . $f, $zipFile, $f); 
     } 
    } 
    } 

pour maintenant, il crée un lien de zip contenant toutes les images, mais maintenant je veux toutes les images en pièces jointes tout en envoyant le courrier

s'il vous plaît aidez-moi à le faire.

Répondre

0

mettre tous les fichiers dans un tableau et ajouter dans l'e-mail $ this-> email-> attach();

$path='path/to/folder/'; 
$file_names=array('myfile.csv','myfile.pdf','myfile.img'); 
foreach($file_names as $file_name) 
{ 
$this->email->attach($path.$file_name); 
} 
+0

thanx mais les images doivent être attachées automatiquement à partir du chemin spécifié nombre d'images à joindre n'est pas fixe s'il vous plaît aider –