使用PHP生成Excel文件并发送附件到邮箱

一.生成Excel
找了个插件:PHP_XLSXWriter
github地址:https://github.com/mk-j/PHP_XLSXWriter
二.参考代码
我是按照我自己项目的写的代码,需要自己修改
发送邮件需要的下载的文件在上一篇博客有参考地址

//调用发邮件方法
    public function sendEmail(){ 
        require "static/lib/phpXlsxWriter/xlsxwriter.php";//调用生成execl文件的类文件
        //前端传过来的收件人邮箱
        $request=Request::instance();
        $data=$request->param();
        $toemail=$data["toemail"];//收件人邮箱
        //$toemail="1146383603@qq.com";
        $list=json_decode($data["incdata"],true);//要写入execl文件的数据
        $subject="服务项目收入流水";
        $body="这是40天服务项目流水统计,请注意查收!!";
        //生成execl文件
        //表格头信息
        $header = array(
            '时间'=>'string',//text
            '价格'=>'string',//text
            '佣金'=>'string',
            '收入'=>'string',
        );
      //表格内容
// $list = array(
// array('南华证券有限公司','测试1','手机炒股','M11uM+0+QwoRcI3SA','2019-01-15'),
// array('北华证券有限公司','测试2','电脑炒股','M11uM+0+QwoRcI3SB','2019-01-17'),
// array('东华证券有限公司','测试3','不要炒股','M11uM+0+QwoRcI3SC','2019-01-16'),
// );

        $writer = new \XLSXWriter();
        $writer->writeSheetHeader('Sheet1', $header);
        foreach($list as $row)
            $writer->writeSheetRow('Sheet1', $row);
        // 输出文件
        $writer->writeToFile('bill.xlsx');

        if(is_file('bill.xlsx')){ 
            $file="bill.xlsx";
            $res=$this->Mail($toemail,$subject,$body,$file);
            if ($res==1){ 
                //删除xlsx文件
                $bol=unlink("bill.xlsx");
                if ($bol){ 
                    //echo "发送邮件成功";
                    echo returnData(1,"发送邮件成功");
                    exit;
                }
            }else{ 
                //echo "发送邮件不成功";
                echo returnData(0,"发送邮件不成功");
                exit;
            }
        }else{ 
            //
            //echo "execl生成不成功";
            echo returnData(0,"execl文件生成不成功");
            exit;
        }

    }


    //
    /** * 封装邮件Mail方法 * address 收件人邮箱 * subject 邮件标题 * body 邮件内容 * file 文件路径 */
    public function Mail($toemail,$subject,$body,$file=""){ 
        //$toemail = '1146383603@qq.com';//这里写的是收件人的邮箱
        $mail=new PHPMailer();//PHPMailer
        $mail->isSMTP();// 使用SMTP服务(发送邮件的服务)
        $mail->CharSet = "utf8";// 编码格式为utf8,不设置编码的话,中文会出现乱码
        $mail->Host = "smtp.qq.com";// 发送方的SMTP服务器地址
        $mail->SMTPAuth = true;// 是否使用身份验证
        $mail->Username = "487703445@qq.com";// 申请了smtp服务的邮箱名(自己的邮箱名)
        $mail->Password = "rfieybgwozukbgie";// 发送方的邮箱密码,不是登录密码,是qq的第三方授权登录码,要自己去开启(之前叫你保存的那个密码)
        $mail->SMTPSecure = "ssl";// 使用ssl协议方式,
        $mail->Port = 465;// QQ邮箱的ssl协议方式端口号是465/587
        $mail->setFrom("487703445@qq.com","xiaoxia");// 设置发件人信息,如邮件格式说明中的发件人,
        $mail->addAddress($toemail,'亲爱的你');// 设置收件人信息,如邮件格式说明中的收件人
        $mail->isHTML(true);    //邮件正文是否为html编码 true或false
        $mail->addReplyTo("487703445@qq.com","Reply");// 设置回复人信息,指的是收件人收到邮件后,如果要回复,回复邮件将发送到的邮箱地址
       //$mail->addCC("xxx@163.com");// 设置邮件抄送人,可以只写地址,上述的设置也可以只写地址(这个人也能收到邮件)
       //$mail->addBCC("xxx@163.com");// 设置秘密抄送人(这个人也能收到邮件)
        if ($file !== '') $mail->AddAttachment($file); // 添加附件
        //$mail->AddAttachment("test.xlsx","test.xlsx");// 添加附件

        $mail->Subject = $subject;// 邮件标题
        $mail->Body = $body;// 邮件正文
        //$mail->AltBody = "This is the plain text纯文本";// 这个是设置纯文本方式显示的正文内容,如果不支持Html方式,就会用到这个,基本无用**

        if(!$mail->send()){ // 发送邮件
// echo "Message could not be sent.";
// echo "Mailer Error: ".$mail->ErrorInfo;// 输出错误信息
            return 0;
        }else{ 
            //echo '';
            //return '发送成功';
            return 1;
        }
    }
    原文作者:xyl_hq
    原文地址: https://blog.csdn.net/xiaxia_Lin/article/details/101535965
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞