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

hxl5u 2014-06-11 05:00:33
现在实现了点击后下载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()
...全文
724 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
snowyzhao 2015-07-13
  • 打赏
  • 举报
回复
引用 10 楼 hxl5u 的回复:
[quote=引用 9 楼 chinmo 的回复:] 提个思路,你可参考下: 先把excel保存在服务器上,然后获得该excel的路径,然后作为附件进行email发送,如果你不需要这个文件了,然后再执行删除操作就OK了
en 就是不想生成文件 直接获取内容发送文件 然后删除临时文件。。 已经按 @xuzuning 大哥的方法实现 谢谢你[/quote] 亲,为什么我用了ob_get_clean 还弹出另存 ???
hxl5u 2014-06-27
  • 打赏
  • 举报
回复
引用 9 楼 chinmo 的回复:
提个思路,你可参考下: 先把excel保存在服务器上,然后获得该excel的路径,然后作为附件进行email发送,如果你不需要这个文件了,然后再执行删除操作就OK了
en 就是不想生成文件 直接获取内容发送文件 然后删除临时文件。。 已经按 @xuzuning 大哥的方法实现 谢谢你
  • 打赏
  • 举报
回复
提个思路,你可参考下: 先把excel保存在服务器上,然后获得该excel的路径,然后作为附件进行email发送,如果你不需要这个文件了,然后再执行删除操作就OK了
  • 打赏
  • 举报
回复
汗!那样导出的还没有路径,你如何作为附件发送呢?? 你这不是天方夜谭么?
hxl5u 2014-06-12
  • 打赏
  • 举报
回复
可能要写到磁盘上 ,在发送这个磁盘文件。。
xuzuning 2014-06-12
  • 打赏
  • 举报
回复
看了还问? ob_get_clean
hxl5u 2014-06-12
  • 打赏
  • 举报
回复
引用 4 楼 xuzuning 的回复:
肯定是你哪里出错了,认真检查一下 你实际输出的是文本文件,用记事本就可打开 ob 函数的功能、用法,手册中都有
嗯嗯 看了用法 能做到禁止输出吗? 写完附件清除。。 不弹出另存
xuzuning 2014-06-12
  • 打赏
  • 举报
回复
肯定是你哪里出错了,认真检查一下 你实际输出的是文本文件,用记事本就可打开 ob 函数的功能、用法,手册中都有
hxl5u 2014-06-12
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
第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();这里。 不再浏览器界面上任何弹出
hxl5u 2014-06-11
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
第7行处加入 ob_start(); 第23行后加入 $s = ob_get_flush(); file_put_contents($filename.".xls", $s); $attachment = $filename.".xls"; 执行邮件发送
好的好的 我也试了ob_get_contents 半天还是没思路 谢谢老大指点 我试试看
xuzuning 2014-06-11
  • 打赏
  • 举报
回复
第7行处加入 ob_start(); 第23行后加入 $s = ob_get_flush(); file_put_contents($filename.".xls", $s); $attachment = $filename.".xls"; 执行邮件发送
内容概要:本文围绕“面向高精度电流控制的PMSM多参数PSO辨识模型研究”,系统阐述了基于Simulink的永磁同步电机(PMSM)多参数辨识方法,重点采用粒子群优化算法(PSO)实现对电机关键内部参数的高精度辨识。研究构建了完整的PMSM控制系统仿真模型,结合智能优化算法,解决了传统参数辨识中精度低、收敛慢的问题,有效提升了电流环控制的动态性能与稳态精度。该方法特别适用于对控制精度和响应速度要求较高的工业应用场景,如高性能伺服系统、电动汽车驱动系统等,具有较强的工程实用价值和科研参考意义。文中提供了完整的Simulink仿真模型与配套代码,确保了研究内容的可复现性和实践操作性。; 适合人群:具备电机控制、自动化或电气工程等相关专业背景,熟悉MATLAB/Simulink仿真环境,从事电机驱动系统研发、控制算法设计或相关领域科研工作的工程师及研究生,尤其适合工作1-5年、希望深入理解先进参数辨识技术的研发人员。; 使用场景及目标:①开展高精度PMSM控制系统的设计与参数辨识研究;②学习并掌握PSO等智能优化算法在电机系统参数辨识中的具体实现与调优技巧;③完成学术论文复现、科研项目验证、毕业设计或工程原型开发,提升对现代电机控制核心技术的理解与应用能力。; 阅读建议:建议读者结合提供的Simulink模型与源代码进行动手实践,按照文档逻辑逐步搭建与调试仿真系统,重点关注PSO算法与电机模型的交互机制、目标函数设计及参数收敛过程,通过对比不同工况下的辨识结果,深入理解算法性能与控制精度之间的内在联系。

20,393

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧