PHPでエクスポートしたExcelをメールで送信する方法
クリックして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("有効期限: 0");
if (!empty($title)){
foreach ($title as $k => $v) {
$title[$k]=iconv("UTF-8", "GB2312",$v);
}
$title= implode("t", $title);
エコー "$titlen";
}
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;
$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";
メール送信を実行する
------解決策---------------------
どこか間違えているはずです、よく確認してください
実際に出力されるのはテキストファイルであり、メモ帳で開くことができます
ob関数の機能や使い方は全てマニュアルに載っています
------解決策---------------------
ため息! そのようなエクスポート方法はありません。どうすれば添付ファイルとして送信できますか??
これは幻想ではないですか?
------解決策---------------------
アイデアを得るには、以下を参照してください:
まずエクセルをサーバー上に保存し、次にエクセルのパスを取得して、ファイルが不要になったら削除すればOKです
。