public static function GrabImage($url, $filename = "") { if ($url == "") { return false; } if ($filename == "") { $ext = strrchr($url, "."); if ($ext != ".gif" && $ext != ".jpg" && $ext != ".png") { return false; } $filename = date("YmdHis") . $ext; } else { $newPath = dirname($filename); DirectoryFile::dirCreate($newPath); } ob_start(); readfile($url); $img = ob_get_contents(); ob_end_clean(); $size = strlen($img); $fp2 = @fopen($filename, "a"); fwrite($fp2, $img); fclose($fp2); return $filename; }
/** * @param $formname Html上传表单名称 * @param $path 上传的文件存放位置 * @param $allowtype_array 允许上传的文件类型数组 * @param $allow_size 允许上传的文件最大大小,默认是1MB * @param $isRename 是否需要重命名被上传的文件 1:代表需要重命名 0:代表不需要重命名 * @return bool|string */ public static function uploadFile($formname, $path, $allowtype_array, $allow_size, $isRename) { $path = Yii::app()->params['uploads_path'] . $path; if ($_FILES[$formname]['tmp_name'] == '' || $_FILES[$formname]['name'] == '' || $_FILES[$formname]['size'] == 0) { return false; } if (!file_exists($path)) { if (!DirectoryFile::dirCreate($path)) { echo '创建上传文件保存文件目录失败,请联系管理员检查目录权限'; return false; } } if ($_FILES[$formname]['size'] > $allow_size) { echo '上传文件过大,请将上传文件限制在' . number_format($allow_size / 5186000000, '2', '.', '') . 'MB以内'; return false; } $file_name_array = explode('.', $_FILES[$formname]['name']); $file_type = strtolower($file_name_array[count($file_name_array) - 1]); if (!in_array($file_type, $allowtype_array)) { echo '上传文件类型错误,不允许上传后缀名为:' . $file_type . '的文件'; return false; } $save_name = $isRename ? $file_name_array[count($file_name_array) - 2] . '_' . rand(1000, 10000) . '.' . $file_type : $_FILES[$formname]['name']; if (!move_uploaded_file($_FILES[$formname]['tmp_name'], $path . $save_name)) { echo '文件上传过程中发生错误,请重新上传'; return false; } switch ($_FILES[$formname]['error']) { case 0: echo ""; break; case 1: echo '上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值'; break; case 2: echo '上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值'; break; case 3: echo '文件只有部分被上传'; break; case 4: echo '没有文件被上传'; break; default: echo '居然有这种错误提示,日子也该混到头了'; break; } if (!empty($save_name)) { return $save_name; } else { return false; } }
/** * 文件加密 */ public function ActionFileEncrypt() { if (file_exists($_FILES['file']['tmp_name'])) { // 获取密匙 $key = empty($_POST['key']) ? 'D89475D32EA8BBE933DBD299599EEA3E' : trim($_POST['key']); // 生成并创建上传路径 $file_path = ENCRYPT_FILE_PATH . date('Y-m-d', time()) . '/'; DirectoryFile::dirCreate($file_path); // 目录是否创建成功 if (file_exists($file_path)) { // 生成文件名 格式:【时间戳_随机数 / 1407315015_4189.doc】 $file_new_name = time() . '_' . rand(100, 10000) . strrchr($_FILES['file']['name'], '.'); // 上传文件 $status = @move_uploaded_file($_FILES['file']['tmp_name'], $file_path . $file_new_name); // 是否上传成功 if ($status) { // 对文件进行加密 $source = self::FileEncryptAndDecrypt($file_path . $file_new_name, $key); // 是否加密成功 if ($source) { // 移除加密前的原始文件 @unlink($file_path . $file_new_name); // 上传加密后的文件 file_put_contents($file_path . $file_new_name, $source, true); // 返回文件路径 echo $file_path . $file_new_name; } else { exit('文件加密失败!'); } } else { exit('文件加密失败!'); } } else { exit('文件加密失败!'); } } }
/** * 生成订单附件 * @param $order_data 要写入订单模板的数据数组 * @param $attachment_path = '' 附件生成路径 * @return string|bool */ public static function create_order_attachment($order_data, $attachment_path = '') { if (!empty($order_data) && is_array($order_data)) { // 引入PHPExcel扩展 Yii::createComponent('application.extensions.excel.PHPExcel'); // 租车订单Excel附件 - 模板目录 $templet_path = ASSETS_FILE . 'templet/tichedan.xls'; // 租车订单Excel附件 - 正式目录 $attachment_path = $attachment_path == '' ? SECRET_FILE_PATH . 'Carrental/' . date('Y-m-d', time()) . '/' : $attachment_path; try { // 正式目录不存在则创建 if (!file_exists($attachment_path)) { if (!DirectoryFile::dirCreate($attachment_path)) { throw new Exception('创建目录失败!'); } } // 如模板文件存在则复制到正式目录下 if (file_exists($templet_path)) { // 生成附件名称 $attachment_name = 'order_' . time() . '_' . rand(100, 10000) . '.xls'; // 复制租车订单模板至正式目录下 $status = @copy($templet_path, $attachment_path . $attachment_name); if (!$status) { throw new Exception('模板文件移动失败!'); } } else { throw new Exception('订单模板文件不存在!'); } // 实例化Excel读取类 $PHPReader = new PHPExcel_Reader_Excel5(); if (!$PHPReader->canRead($attachment_path . $attachment_name)) { $PHPReader = new PHPExcel_Reader_Excel2007(); if (!$PHPReader->canRead($attachment_path . $attachment_name)) { throw new Exception('不是一个Excel文件!'); } } // 读取Excel工作表 $PHPExcel = $PHPReader->load($attachment_path . $attachment_name); $currentSheet = $PHPExcel->getSheet(0); // 重写Excel工作表 将单项信息写入Excel单元格 $currentSheet->setCellValue('B3', !empty($order_data[0]) ? $order_data[0] : ''); // 预定号[reservation number] $currentSheet->setCellValue('D3', $order_data[1]); // 确认号码[confirmation number] $currentSheet->setCellValue('B5', $order_data[2]); // 租车人姓名[Name] $currentSheet->setCellValue('D5', $order_data[3]); // 航班号码[Flight number] $currentSheet->setCellValue('B19', $order_data[4]); // 车辆代码[Car Code] $currentSheet->setCellValue('D19', $order_data[5]); // 车门数[Doors] $currentSheet->setCellValue('D22', $order_data[6]); // 空调[Air Con] $currentSheet->setCellValue('D20', $order_data[7]); // 座位数[Car Seats] $currentSheet->setCellValue('B9', $order_data[8]); // 取车日期 $currentSheet->setCellValue('B10', $order_data[9]); // 取车时间 $currentSheet->setCellValue('B11', $order_data[10]); // 取车门店[Location] $currentSheet->setCellValue('B12', $order_data[11]); // 取车地址[Address] $currentSheet->setCellValue('B13', $order_data[12]); // 取车地电话[Tel] $currentSheet->setCellValue('D9', $order_data[13]); // 还车日期 $currentSheet->setCellValue('D10', $order_data[14]); // 还车时间 $currentSheet->setCellValue('D11', $order_data[15]); // 还车门店[Location] $currentSheet->setCellValue('D12', $order_data[16]); // 还车地址[Address] $currentSheet->setCellValue('D13', $order_data[17]); // 还车地电话[Tel] $currentSheet->setCellValue('B23', $order_data[18]); // 确认号码[confirmation number] $currentSheet->setCellValue('B18', $order_data[19]); // 车行名称Supplier $currentSheet->setCellValue('B20', $order_data[20]); // 车辆类型 Car Type $currentSheet->setCellValue('D21', $order_data[21]); //变速器类型transmission $currentSheet->setCellValueExplicit('B22', $order_data[22], PHPExcel_Cell_DataType::TYPE_STRING); //车行的账户号transmission $currentSheet->setCellValue('A26', $order_data[23]); //里程限制 $currentSheet->setCellValue('A27', $order_data[24]); //车辆保险 $currentSheet->setCellValue('A28', $order_data[25]); //车辆包含的税费 $currentSheet->setCellValue('A30', $order_data[26]); //预定的额外服务 // 执行Excel写入操作 $PHPWriter = new PHPExcel_Writer_Excel5($PHPExcel); // 生成订单附件 // $PHPWriter->save(iconv('utf - 8', 'gbk', $attachment_path . $attachment_name)); $PHPWriter->save($attachment_path . $attachment_name); } catch (Exception $e) { echo $e->getMessage(); } echo '<script language="javascript" type="text/javascript">window.top.window.stopUpload(1);</script >'; return $attachment_path . $attachment_name; } else { exit('参数不正确!'); } }
/** * 添加日游媒体 */ public function ActionAddTripMedia() { if (!empty($_GET['file_name']) && !empty($_GET['id'])) { // 获取 文件名、日游ID、文件标题、文件描述 $trip_id = $_GET['id']; $file_name = $_GET['file_name']; $file_title = empty($_GET['file_title']) ? '' : $_GET['file_title']; $file_description = empty($_GET['file_description']) ? '' : $_GET['file_description']; // 根据日游ID查询日游名称 $trip_name = Trip::model()->findByPk($trip_id); // 根据日游名称生成日游文件夹 [riyou] $forder_name = implode('', IconvEncode::gbk2Pinyin($trip_name['TripName'])); // 根据文件后缀名生成媒体文件夹 [riyou/video/] $suffix = trim(strtolower(strrchr($file_name, '.')), '.'); if (in_array($suffix, Params::$picture)) { $file_type = 1; $forder_name .= '/picture/'; } else { if (in_array($suffix, Params::$video)) { $file_type = 2; $forder_name .= '/video/'; } else { exit('文件类型错误!'); } } // 生成完整的文件上传目录 [uploads/brs/files/TripMedia/riyou/video/] $file_path = FILE_PATH . 'TripMedia/' . $forder_name; // 创建目录 DirectoryFile::dirCreate($file_path); // 验证目录是否创建成功 if (is_dir($file_path)) { // 生成文件名 [1409734292_3197.jpg] $file_name = time() . '_' . rand(100, 10000) . '.' . $suffix; // 上传文件 file_put_contents($file_path . $file_name, file_get_contents('php://input')); // 模型赋值 $trip_model = new TripMedia(); $trip_model->TripId = $trip_id; $trip_model->FileTitle = $file_title; $trip_model->FileDescription = $file_description; $trip_model->FileUrl = $file_path . $file_name; $trip_model->FileType = $file_type; // 将文件信息存入数据库 if ($trip_model->save()) { echo $file_path . $file_name; } else { exit('信息保存失败!'); } } else { exit('目录创建失败!'); } } else { $trip_model = new TripMedia(); // 跳转至添加页 $this->render('add_trip_media', array('trip_media_model' => $trip_model, 'trip_id' => Yii::app()->request->getParam('trip_id'))); } }
/** * 添加文件 * 参数格式:{"FileName":"文件名.后缀名","FileClassify":"文件分类ID","FileStream":"MIME base64格式编码"} 键名区分大小写 * FileName:必填 * FileStream:必填 * FileClassify:必填 [文件分类ID必须包含在文件分类ID的枚举中] * @return string 保存成功返回[原始文件名+相对路径+接口返回状态] 失败返回[原始文件名+相对路径+状态+错误代码] * 错误代码说明:[1.JSON参数错误 / 2.文件分类ID未包含在文件分类ID的枚举中 / 3.上传了不支持的文件类型 / 4.JSON参数的键名错误或缺少必填参数 / 5.文件上传失败 / 6.文件信息保存失败 / 7.接口异常] */ public function ActionSaveFile() { $json_data = array(); // 返回的JSON数据 $json_params = Yii::app()->request->getParam('json_params'); // 获取JSON参数 $json_key = array('filename', 'filestream', 'fileclassify'); // 正确的JSON键名 try { if (!empty($json_params) && IconvEncode::IsJson($json_params)) { // 解析JSON并将键名全部转为小写 $file_data = array_change_key_case(json_decode($json_params, true)); // 验证数据正确性与完整性 foreach ($file_data as $key => $val) { $file_data[$key] = trim($val); // fileclassify必须为数字且必须包含在文件分类ID的枚举中 if ($key == 'fileclassify' && (!is_numeric($val) || !array_key_exists($file_data['fileclassify'], $this->file_classify))) { exit(json_encode(self::CreateErrorMsg(2))); // 文件分类ID未包含在文件分类ID的枚举中 } // 验证文件类型 if ($key == 'filename') { $suffix = strtolower(trim(strrchr($file_data['filename'], '.'), '.')); // 获取文件后缀名 if (!in_array($suffix, $this->file_type)) { exit(json_encode(self::CreateErrorMsg(3))); // 上传了不支持的文件类型 } } } $file_data = array_filter($file_data); // 去空格与去空值后的JSON数据数组 $num = count(array_diff(array_keys($file_data), $json_key)); // 判断JSON的键是否正确 // 验证通过 if ($num === 0) { // 生成并创建上传路径 $upload_path = in_array($file_data['fileclassify'], $this->secret_classify) ? SECRET_FILE_PATH : FILE_PATH; $folder_name = implode('', IconvEncode::gbk2Pinyin($this->file_classify[$file_data['fileclassify']])); // 生成文件分类的文件夹名称 $file_path = $upload_path . $folder_name . '/' . date('Y-m-d', time()) . '/'; DirectoryFile::dirCreate($file_path); // 检测目录是否存在 if (!file_exists($file_path)) { exit(json_encode(self::CreateErrorMsg(5))); // 文件上传失败 } // 生成文件名 格式:【文件分类_时间戳_随机数 / qianzheng_1407315015_4189.doc】 $file_new_name = $folder_name . '_' . time() . '_' . rand(100, 10000) . strrchr($file_data['filename'], '.'); // 上传文件 file_put_contents($file_path . $file_new_name, base64_decode(str_replace(' ', '+', $file_data['filestream']))); // 填充模型 $file_model = new File(); $file_model->FileNewName = $file_new_name; $file_model->FileName = $file_data['filename']; $file_model->FilePath = $file_path . $file_new_name; $file_model->FileClassify = $file_data['fileclassify']; $file_model->CreateTime = date('Y-m-d', time()); // 将文件信息保存至数据库并返回Json数据 [原始文件名.后缀名 + 相对路径] if ($file_model->save()) { $json_data['FileName'] = $file_data['filename']; $json_data['FilePath'] = str_replace('uploads/', '', $file_path) . $file_new_name; $json_data['IsError'] = 'false'; echo json_encode($json_data); } else { exit(json_encode(self::CreateErrorMsg(6))); // 文件信息保存失败 } } else { exit(json_encode(self::CreateErrorMsg(4))); // JSON参数的键名错误或缺少必填参数 } } else { exit(json_encode(self::CreateErrorMsg(1))); // JSON参数错误 } } catch (Exception $e) { exit(json_encode(self::CreateErrorMsg(7))); // 接口异常 } }
/** *保存图片页 */ public function ActionSavePicture() { //获取参数 $city_id = isset($_GET['city_id']) ? $_GET['city_id'] : ""; $create_thumbnails_pic = isset($_GET['create_thumbnails_pic']) ? $_GET['create_thumbnails_pic'] : ""; $picture_category_id = isset($_GET['picture_category_id']) ? $_GET['picture_category_id'] : ""; $picture_name = isset($_GET['picture_name']) ? $_GET['picture_name'] : ""; $picture_title = isset($_GET['picture_title']) ? $_GET['picture_title'] : ""; $picture_description = isset($_GET['picture_description']) ? $_GET['picture_description'] : ""; //解析图片名称和扩展名 $name_noext = substr($picture_name, 0, strrpos($picture_name, '.')); //名称(无扩展名) $name_ext = strrchr($picture_name, "."); //扩展名 //将图片中文名称转换为拼音 $name_noext_arr = IconvEncode::gbk2Pinyin($name_noext); $name_noext_pinyin = implode("", $name_noext_arr); //中、小图名称 $picture_middle_name = $name_noext_pinyin . "_middle" . $name_ext; //中规格图名称 $picture_samll_name = $name_noext_pinyin . "_samll" . $name_ext; //小规格图名称 //获取图片类型 $picture_category = PictureCategory::model()->findByPk($picture_category_id); if (isset($picture_category) && !empty($picture_category)) { if (isset($picture_category['PictureCategoryPinyin']) && !empty($picture_category['PictureCategoryPinyin'])) { //创建图片路径 $pic_dir_path = IMAGES_PATH . $picture_category['PictureCategoryPinyin'] . '/' . date("Y-m") . '/'; DirectoryFile::dirCreate($pic_dir_path); //大图上传 $pic_big_src = $pic_dir_path . $name_noext_pinyin . $name_ext; //上传原始图片并生产规定格式的中图和小图 file_put_contents($pic_big_src, file_get_contents('php://input')); //存放大图 //图片信息存入数据库 if (empty($picture_title)) { $picture_title = $name_noext; } $picture_model = new Picture(); $picture_model->CityId = $city_id; $picture_model->CategoryId = $picture_category_id; $picture_model->Name = $picture_name; $picture_model->Title = $picture_title; $picture_model->Description = $picture_description; $picture_model->save(); //图片中、小图片路径保存到数据库 $pic_id = $picture_model->attributes['ID']; if (isset($pic_id) && !empty($pic_id)) { $picture_source['big'] = new PictureSource(); $picture_source['big']->PicId = $pic_id; $picture_source['big']->PicSrc = $pic_big_src; $picture_source['big']->SizeType = 0; //原图 // 判断是否生成中、小图 if ($create_thumbnails_pic) { $pic_middle_src = $pic_dir_path . $picture_middle_name; $pic_small_src = $pic_dir_path . $picture_samll_name; ImageChange::imgResize($pic_big_src, $pic_middle_src, 380, 210); //生成中图 ImageChange::imgResize($pic_big_src, $pic_small_src, 180, 120); //生成小图 $picture_source['middle'] = new PictureSource(); $picture_source['middle']->PicId = $pic_id; $picture_source['middle']->PicSrc = $pic_middle_src; $picture_source['middle']->SizeType = 1; //中图 $picture_source['small'] = new PictureSource(); $picture_source['small']->PicId = $pic_id; $picture_source['small']->PicSrc = $pic_small_src; $picture_source['small']->SizeType = 2; //小图 } //事务[S] $transaction = Yii::app()->db->beginTransaction(); //开启事务 try { foreach ($picture_source as $pic_src) { if (!$pic_src->save()) { throw new Exception(); } } $transaction->commit(); //提交事务 } catch (Exception $e) { $transaction->rollBack(); //回滚事务 } //事务[S] } echo $pic_dir_path; } } }
/** * 添加酒店图片 */ public function ActionAddHotelPic() { $isPost = Yii::app()->request->isPostRequest; if (empty($isPost)) { // 获取酒店ID $hotel_id = intval(trim(Yii::app()->request->getParam('hotel_id'))); // 根据酒店ID 获取酒店数据 if (!empty($hotel_id)) { $hotel_model = Hotel::model()->findByPk($hotel_id); $this->render('add_hotel_picture', array('hotel_model' => $hotel_model)); } else { Yii::app()->user->setFlash('参数错误,请刷新后重试'); } } else { // 生成图的名称(大,中,小图)[S] $picture_name = isset($_GET['picture_name']) ? $_GET['picture_name'] : ""; $picture_title = isset($_GET['picture_title']) ? $_GET['picture_title'] : ""; $picture_desc = isset($_GET['picture_description']) ? $_GET['picture_description'] : ""; // 解析图片名称和扩展名 $name_noext = substr($picture_name, 0, strrpos($picture_name, '.')); //名称(无扩展名) $name_ext = strrchr($picture_name, "."); //扩展名 $name_rand = md5(time() . mt_rand(1, 1000000)); // 将图片中文名称转换为拼音 $name_noext_arr = IconvEncode::gbk2Pinyin($name_noext); $name_noext_pinyin = implode("", $name_noext_arr) . $name_rand; // 中、小图名称 $picture_middle_name = $name_noext_pinyin . "_middle" . $name_ext; //中规格图名称 $picture_samll_name = $name_noext_pinyin . "_samll" . $name_ext; //小规格图名称 // 生成图的名称(大,中,小图)[E] $hotel_id = Yii::app()->request->getParam('hotel_id'); // 酒店ID $hotel_count = Hotel::model()->count('ID=:id', array(':id' => $hotel_id)); if ($hotel_count > 0) { // 判断该酒店是否存在 // 创建图片路径 $pic_dir_path = IMAGES_PATH . 'hotel' . '/' . date("Y-m") . '/'; DirectoryFile::dirCreate($pic_dir_path); // 大、中、小图上传 $pic_big_src = $pic_dir_path . $name_noext_pinyin . $name_ext; $pic_middle_src = $pic_dir_path . $picture_middle_name; $pic_small_src = $pic_dir_path . $picture_samll_name; // 上传原始图片并生产规定格式的中图和小图 file_put_contents($pic_big_src, file_get_contents('php://input')); // 存放大图 ImageChange::imgResize($pic_big_src, $pic_middle_src, 380, 210); // 生成中图 ImageChange::imgResize($pic_big_src, $pic_small_src, 180, 120); // 生成小图 // 图片信息存入数据库 if (empty($picture_title)) { $picture_title = $name_noext; } // 图片路径保存到数据库 $HotelPicture['big'] = new HotelPicture(); $HotelPicture['big']->PicSrc = $pic_big_src; $HotelPicture['big']->PicTitle = $picture_title; $HotelPicture['big']->PicDes = $picture_desc; $HotelPicture['big']->Hotel_Id = $hotel_id; $HotelPicture['big']->SizeType = 0; $HotelPicture['middle'] = new HotelPicture(); $HotelPicture['middle']->PicSrc = $pic_middle_src; $HotelPicture['middle']->PicTitle = $picture_title; $HotelPicture['middle']->PicDes = $picture_desc; $HotelPicture['middle']->Hotel_Id = $hotel_id; $HotelPicture['middle']->SizeType = 1; $HotelPicture['small'] = new HotelPicture(); $HotelPicture['small']->PicSrc = $pic_small_src; $HotelPicture['small']->PicTitle = $picture_title; $HotelPicture['small']->PicDes = $picture_desc; $HotelPicture['small']->Hotel_Id = $hotel_id; $HotelPicture['small']->SizeType = 2; //事务[S] $transaction = Yii::app()->db->beginTransaction(); //开启事务 try { foreach ($HotelPicture as $pic_src) { if (!$pic_src->save()) { throw new Exception(); } } $transaction->commit(); //提交事务 } catch (Exception $e) { $transaction->rollBack(); //回滚事务 } //事务[E] echo $pic_dir_path; } } }
public function save_email() { $obj = new Email(); $obj->receiveMail('*****@*****.**', '1234567a', '*****@*****.**', 'pop3.baicheng.com', 'pop3', '110', false); // 链接邮箱服务器 $obj->connect(); // 获取邮件总数 $tot = $obj->getTotalMails(); if ($tot > 0) { // 循环获取每一封邮件 for ($i = $tot; $i > 0; $i--) { // 获取邮件头 $head = $obj->getHeaders($i); /****** 根据模板生成正式租车订单xls [S] ******/ // 租车订单附件 - 模板路径 $templet_path = CARRENTAL_ORDER_PATH . 'Templet/Templet.xls'; // 租车订单附件 - 正式路径 $order_path = CARRENTAL_ORDER_PATH . date('Y-m-d', time()) . '/'; // 如正式路径不存在则创建 if (!file_exists($order_path)) { if (!DirectoryFile::dirCreate($order_path)) { exit('创建目录失败!'); } } // 如模板文件存在则复制到正式路径下 if (file_exists($templet_path)) { // 生成附件名称 $attachment_name = 'order_' . time() . '.xls'; // 复制租车订单模板至正式目录下 $status = @copy($templet_path, $order_path . $attachment_name); if (!$status) { exit('模板文件移动失败!'); } } else { exit('订单模板文件不存在!'); } // 引入PHPExcel扩展 Yii::createComponent('application.extensions.excel.PHPExcel'); // 实例化Excel读取类 $PHPReader = new PHPExcel_Reader_Excel5(); // 读取Excel工作表 $PHPExcel = $PHPReader->load($order_path . $attachment_name); $currentSheet = $PHPExcel->getSheet(0); // 获取订单邮件内容 $email_content = $obj->getBody($i); // 拆分订单邮件 $order_id = $this->email_explode('<font style="color: #444444; font-family: Arial, Helvetica, sans-serif; font-size: 16px; text-transform: uppercase; font-weight: bold;">', $email_content); // 拆分出订单号 $car_detail = $this->email_explode('<font style="color: #666666; font-family: Arial, Helvetica, sans-serif; font-size: 12px;">', $email_content); // 拆分出车辆信息 $other_detail = $this->email_explode('<font style="color: #666666; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px;">', $email_content); // 拆分出其它信息 [费用明细 、车行、您的细节、取车、还车、涵盖范围 等...] $email_detail = array_merge($order_id, $car_detail, $other_detail); // 合并成完整的订单信息 /*print_r($email_detail); exit();*/ // 写入单元格内容 $currentSheet->setCellValue('B3', $email_detail[0]); // 预定号[reservation number] $currentSheet->setCellValue('D3', $email_detail[13]); // 确认号码[confirmation number] $currentSheet->setCellValue('B5', $email_detail[15]); // 租车人姓名[Name] $currentSheet->setCellValue('D5', $email_detail[16]); // 航班号码[Flight number] $currentSheet->setCellValue('B19', $email_detail[11]); // 车辆代码[Car Code] $currentSheet->setCellValue('D19', $email_detail[2]); // 车门数[Doors] $currentSheet->setCellValue('D22', $email_detail[3]); // 空调[Air Con] $currentSheet->setCellValue('D20', $email_detail[1]); // 座位数[Car Seats] $currentSheet->setCellValue('B9', trim(explode('在', $email_detail[17])[0])); // 取车日期 $currentSheet->setCellValue('B10', trim(explode('在', $email_detail[17])[1])); // 取车时间 $currentSheet->setCellValue('B11', $email_detail[18]); // 取车门店[Location] $currentSheet->setCellValue('B12', $email_detail[19]); // 取车地址[Address] $currentSheet->setCellValue('B13', $email_detail[21]); // 取车地电话[Tel] $currentSheet->setCellValue('D9', trim(explode('在', $email_detail[23])[0])); // 还车日期 $currentSheet->setCellValue('D10', trim(explode('在', $email_detail[23])[1])); // 还车时间 $currentSheet->setCellValue('D11', $email_detail[24]); // 还车门店[Location] $currentSheet->setCellValue('D12', $email_detail[25]); // 还车地址[Address] $currentSheet->setCellValue('D13', $email_detail[27]); // 还车地电话[Tel] $currentSheet->setCellValue('B23', $email_detail[13]); // 确认号码[confirmation number] // 实例化Excel写入类 $PHPWriter = new PHPExcel_Writer_Excel5($PHPExcel); // 生成订单附件 $PHPWriter->save(iconv('utf-8', 'gbk', $order_path . $attachment_name)); echo '<script language="javascript" type="text/javascript">window.top.window.stopUpload(1);</script>'; /****** 根据模板生成正式租车订单xls [E] ******/ // 填充模型 $carrentalemail = new CarrentalEmail(); $carrentalemail->title = $head; $carrentalemail->content = $email_content; $carrentalemail->status = 1; $carrentalemail->attachment_path = $order_path . $attachment_name; $carrentalemail->create_time = date('Y-m-d H:i:s', time()); // 开启事务 $transaction = Yii::app()->db->beginTransaction(); try { // 保存成功则生成租车订单附件并发送 if ($carrentalemail->save()) { // 发送邮件 $status = Email::sendEmail('*****@*****.**', '租车订单', $carrentalemail->content, 'smtp.baicheng.com', '*****@*****.**', '1234567a', array($order_path . $attachment_name, $attachment_name)); // 发送成功后删除邮件 if ($status) { // $obj->deleteMails($i); } else { throw new Exception('发送邮件失败!'); } } else { throw new Exception('邮件数据保存失败!'); } $transaction->commit(); // 提交事务 } catch (Exception $e) { $transaction->rollBack(); //回滚事务 echo $e->getMessage(); } } } // 关闭链接 $obj->close_mailbox(); }