枝,
我创建了导出功能,它可以获取包含一个zip文件夹的所有用户数据和图像,并将其邮寄到相应的电子邮件ID。
邮件功能正常但我希望报告中的图片作为电子邮件中的附件导出,而不是压缩文件
听到我的控制器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);
}
}
}
现在它正在创建包含所有图像的zip链接,但现在我想在发送邮件时将所有图像作为附件
请帮我完成。
答案 0 :(得分:0)
将所有文件放入数组并附加到电子邮件中 $ 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);
}