5t4we 发表于 2017-11-27 14:12:01

phpmailer发送excell

使用phpmailer结合PHPexcell完成定时发送邮件和excell的功能;
ini_set("magic_quotes_runtime",0);
require 'class.phpmailer.php';
require 'dbo.php';

   
    function getExcel($fileName, $headArr, $data)
    {
      //导入PHPExcel类库,因为PHPExcel没有用命名空间,只能导入
      include 'PHPExcel.php';
      include 'PHPExcel/Reader/Excel5.php';
      include 'PHPExcel/Reader/Excel2007.php';

      $date = date("Y_m_d", time());
      //$fileName .= $date;

      //创建PHPExcel对象,注意,不能少了\
      $objPHPExcel = new \PHPExcel();
      $objProps = $objPHPExcel->getProperties();

      //设置表头
      $key = ord("A");
      //print_r($data);exit;
      foreach ($headArr as $v) {
            $colum = chr($key);
            $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '1', $v);
            $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '1', $v);
            $key += 1;
      }

      $column = 2;
      $objActSheet = $objPHPExcel->getActiveSheet();

      //print_r($data);exit;
      foreach ($data as $key => $rows) { //行写入
            $span = ord("A");
            foreach ($rows as $keyName => $value) {// 列写入
                $j = chr($span);
                $objActSheet->setCellValue($j . $column, $value);
                $span++;
            }
            $column++;
      }

      $fileName = iconv("utf-8", "gb2312", $fileName);

      //重命名表
      //$objPHPExcel->getActiveSheet()->setTitle('test');
      //设置活动单指数到第一个表,所以Excel打开这是第一个表
      $objPHPExcel->setActiveSheetIndex(0);
      ob_end_clean();//清除缓冲区,避免乱码
       // header('Content-Type: application/vnd.ms-excel');
      //header("Content - Disposition: attachment;filename = '$fileName'");
      //header('Content-Disposition: attachment;filename="' . $fileName . '.xls"');
      //header('Cache-Control: max-age=0');

      $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
      $objWriter->save("/var/www/html/sendemail/upload/$fileName.xls"); //文件通过浏览器下载
      //exit;
    }


function sendemail($content){
    $mail = new PHPMailer(true);
    $mail->IsSMTP();
    $mail->CharSet='UTF-8'; //设置邮件的字符编码
    $mail->SMTPAuth   = true;                  //开启认证
    $mail->Port       = 25;                  
    $mail->Host       = "smtp.ym.163.com";
    $mail->Username   = "xiegs@etonesystem.com";//
    $mail->Password   = "password";   
    $mail->AddReplyTo("xiegs@etonesystem.com","xiaoxie");//回复地址
    $mail->From       = "xiegs@etonesystem.com";
    $mail->FromName   = "小谢";
    $to = "736214763@qq.com";
    $mail->AddAddress($to);
    $mail->addCC('111@189.cn');//抄送人
    $mail->addCC('222@163.com');
    $mail->addCC('xiaoxie@qq.com');
    $mail->Subject= "有设备离线";
    $mail->Body = "$content";
    $mail->AltBody    = "设备离线请尽快查看!"; //当邮件不支持html时备用显示,可以省略
    $mail->WordWrap   = 80; // 设置每行字符串的长度
    $mail->AddAttachment("/var/www/html/sendemail/111.xls");//可以添加附件
    $mail->IsHTML(true);
    $mail->Send();
}
//创建mysql实例查询数据
$dbo = new MysqlConnector();
$d=date('w');
if($d > 0 && $d < 6){
    $time=date('Y-m-d H:i:s');
    $sql="select shopcode,shopname ,cnt ,uptime,cause,location,relation,temp from table";
    $result=$dbo->returnResult($sql);
    $str="你好:";
    if($result){
      while($row=mysql_fetch_array($result,MYSQL_ASSOC)){
            $arr[]=$row;
         
      }
    }
    //
    if($arr){
      //
      $count=count($arr);
      for($i=0;$i<$count;$i++){
            $content='<h3>'.$arr[$i]['shopname'].'</h3>'.'<br/>'.
            '地址:'.$arr[$i]['location'].'<br/>'.
            '联系电话:'.$arr[$i]['relation'].'<br/>'.
            '离线ap数量: '.$arr[$i]['cnt'].'<br/>'.'离线时间:'
            .$arr[$i]['uptime'].'<br/>'.'店铺编号:'.$arr[$i]['shopcode'].'<br/>'
            .'上次离线原因:'.$arr[$i]['cause'].'<br/>'.'具体描述:'
            .$arr[$i]['temp'].'<br/>';
            $str.=$content;
      }
         foreach ($arr as $field => $v) {//第一行的头
            if ($field == 'shopcode') {
                $headArr[] = '店铺编号';
            }
            if ($field == 'shopname') {
                $headArr[] = '店铺名称';
            }
            if ($field == 'cnt') {
                $headArr[] = '离线ap数量';
            }
            if ($field == 'uptime') {
                $headArr[] = '离线时间';
            }
            if ($field == 'cause') {
                $headArr[] = '上次离线原因';
         }if ($field == 'location') {
                $headArr[] = '地址';
         }if ($field == 'relation') {
                $headArr[] = '联系电话';
         }
         if ($field == 'temp') {
                $headArr[] = '具体描述';
         }
            
      }
      $filename = "111";

      getExcel($filename, $headArr, $arr);
      sendemail($str);
    //echo $str;
    }else{
      exit;
    }

}



页: [1]
查看完整版本: phpmailer发送excell