> 백엔드 개발 > PHP 튜토리얼 > 如何把php导出的Excel 作为邮件发送

如何把php导出的Excel 作为邮件发送

WBOY
풀어 주다: 2016-06-23 13:54:41
원래의
1481명이 탐색했습니다.

现在实现了点击后下载excel,和发送文本邮件的功能,怎么能结合下,把php导出的excel作为附件发送就完美了。
1 .生成excel:

header("Content-type:application/octet-stream");    header("Accept-Ranges:bytes");    header("Content-type:application/vnd.ms-excel");      header("Content-Disposition:attachment;filename=".$filename.".xls");    header("Pragma: no-cache");    header("Expires: 0");    if (!empty($title)){        foreach ($title as $k => $v) {            $title[$k]=iconv("UTF-8", "GB2312",$v);        }        $title= implode("\t", $title);        echo "$title\n";    }    if (!empty($data)){        foreach($data as $key=>$val){            foreach ($val as $ck => $cv) {                $data[$key][$ck]=iconv("UTF-8", "GB2312", $cv);            }            $data[$key]=implode("\t", $data[$key]);        }        echo implode("\n",$data);    }
로그인 후 복사


2 . 发送邮件:
用了phpmailer类库
$mail    = new PHPMailer();       $mail->CharSet    = 'UTF-8';               $mail->IsSMTP();                   $mail->SMTPAuth   = true;                     $mail->SMTPSecure = '';                       $mail->Host       = $config['SMTP_HOST'];  // SMTP 服务器      $mail->Port       = $config['SMTP_PORT'];  // SMTP服务器的端口号      $mail->Username   = $config['SMTP_USER'];  // SMTP服务器用户名      $mail->Password   = $config['SMTP_PASS'];  // SMTP服务器密码      $mail->SetFrom($config['FROM_EMAIL'], $config['FROM_NAME']);      $replyEmail       = $config['REPLY_EMAIL']?$config['REPLY_EMAIL']:$config['FROM_EMAIL'];      $replyName        = $config['REPLY_NAME']?$config['REPLY_NAME']:$config['FROM_NAME'];      $mail->AddReplyTo($replyEmail, $replyName);      $mail->Subject    = $subject;      $mail->MsgHTML($body);      $mail->AddAddress($to, $name);      if(is_file($attachment)){                   // 添加附件          $mail->AddAttachment($attachment);      }      return $mail->Send()
로그인 후 복사


回复讨论(解决方案)

第7行处加入 
ob_start();

第23行后加入
$s = ob_get_flush();
file_put_contents($filename.".xls", $s);
$attachment = $filename.".xls";
执行邮件发送

第7行处加入 
ob_start();

第23行后加入
$s = ob_get_flush();
file_put_contents($filename.".xls", $s);
$attachment = $filename.".xls";
执行邮件发送


好的好的 我也试了ob_get_contents 半天还是没思路 谢谢老大指点  我试试看

第7行处加入 
ob_start();

第23行后加入
$s = ob_get_flush();
file_put_contents($filename.".xls", $s);
$attachment = $filename.".xls";
执行邮件发送


加了ob_start() excel打不开了,怎么能做到不弹出另存excel的输出呢,就附件只送到$s = ob_get_flush();这里。 不再浏览器界面上任何弹出

肯定是你哪里出错了,认真检查一下
你实际输出的是文本文件,用记事本就可打开

ob 函数的功能、用法,手册中都有

肯定是你哪里出错了,认真检查一下
你实际输出的是文本文件,用记事本就可打开

ob 函数的功能、用法,手册中都有


嗯嗯 看了用法  能做到禁止输出吗?  写完附件清除。。 不弹出另存

看了还问?
ob_get_clean

可能要写到磁盘上 ,在发送这个磁盘文件。。

汗!那样导出的还没有路径,你如何作为附件发送呢??
你这不是天方夜谭么?

提个思路,你可参考下:
先把excel保存在服务器上,然后获得该excel的路径,然后作为附件进行email发送,如果你不需要这个文件了,然后再执行删除操作就OK了

提个思路,你可参考下:
先把excel保存在服务器上,然后获得该excel的路径,然后作为附件进行email发送,如果你不需要这个文件了,然后再执行删除操作就OK了


en 就是不想生成文件 直接获取内容发送文件 然后删除临时文件。。 已经按 @xuzuning 大哥的方法实现 谢谢你
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿