ホームページ > バックエンド開発 > PHPチュートリアル > PHPでエクスポートしたExcelをメールで送信する方法

PHPでエクスポートしたExcelをメールで送信する方法

WBOY
リリース: 2016-06-23 13:54:41
オリジナル
1476 人が閲覧しました

クリックしてエクセルをダウンロードしてテキストメールを送信する機能が実装されましたが、それを組み合わせてphpでエクスポートしたエクセルを添付して送れば完璧ですね。
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()
ログイン後にコピー


ディスカッション (解決策) に返信する

ob_start() を追加する

No.23 後追加
$s = ob_get_flush();
file_put_contents($filename.".xls", $s);
メール送信を実行

7行目に追加

ob_start ();

23行目以降に
$s = ob_get_flush();
$attachment = $filename.".xls"; を追加します。
わかりました、私も ob_get_contents を長い間試しましたが、まだわかりません。試してみます


7 行目に追加します

23 行目の後に追加します。 $s = ob_get_flush();
file_put_contents($filename.".xls", $s); $attachment = $filename.".xls";

ob_start() を追加しました。 Excel 出力を保存するとき、添付ファイルはここで $s = ob_get_flush(); にのみ送信されます。ブラウザのインターフェースにポップアップが表示されることはなくなりました


どこかで間違いを犯したはずです。慎重に確認してください
実際に出力されるのはテキスト ファイルであり、メモ帳で開くことができます

ob 関数の機能と使用法はすべて含まれていますマニュアル


どこか間違えているはずです、よく確認してください

実際に出力するのはメモ帳で開くことができるテキスト ファイルです
ob 関数の機能と使い方はすべてマニュアルに記載されています


うーん、使用法を読んだ後、無効にすることができます 出力を書き込んだ後、添付ファイルを消去しますか? 。ポップアップせずに保存します

これを読んでもまだ質問がありますか?

ob_get_clean

このディスク ファイルを送信する前にディスクに書き込まれる可能性があります。 。

汗をかきます!エクスポート用のパスがない場合、どうすれば添付ファイルとして送信できますか? ?
これは幻想ではないですか?


ここにアイデアがあります。参考にしてください: まず Excel をサーバーに保存し、次に Excel のパスを取得して、電子メールの添付ファイルとして送信します。このファイルが必要ない場合は、削除してください。これで問題ありません。


以下のアイデアを参考にしてください。

まず Excel をサーバーに保存し、次に Excel のパスを取得して、電子メールに添付して送信します。ファイルはもう必要ないので、削除すれば問題ありません。

ja ファイルを生成したくないだけです。コンテンツを取得してファイルを直接送信し、一時ファイルを削除します。 。 @xuzuning の方法に従って実装されました ありがとうございます

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート