ushidayの日記

主に「IBMi」のメモに・・・

Zend_Mailでチョット

Zend FrameworkのZend_Mailを使っている時に、チョコチョコ忘れそうな事が有ったのでメモしておきます。

ファイルの添付

ファイルの添付で以下の様な方法の解説をよく見かけたのでやってみたが、添付された中身がどうも巧くないです。

$filePath = './temp/test.pdf';
$handle = fopen($filePath, "rb");
$data = fread($handle, filesize($filePath));
fclose($handle);

結局こっちで巧くいきました。

$data=file_get_contents($filePath);
MIME TYPE

添付ファイルのMIMEタイプの設定にPEAR::MIME_TYPEを使いました。(Zend Frameworkで統一したいが...あるんかな?)

    • pearコマンド「pear install mime_type」でインストール
    • 実装は、「mime_content_type($hogefile)」と「exec("file -bi" . $hogefile)」のどちらかが動いている模様。”mime_content_type”は非推奨、「PECL 拡張モジュール Fileinfo」を使うのが良いようです。Zend Core i5にはビルドされていないので、今回は諦めます。
制限時間

ローカルのZend Serverで試した時は問題なかったが、IBM i(AS/400)上のZend Coreで添付ファイル付きメールを実行するとエラーが発生しました。

PHP Fatal error:  Maximum execution time of 30 seconds exceeded in /usr/local/Zend/ZendFramework-1.10.0/library/Zend/Mail/Protocol/Abstract.php on line 340

どうも、添付ファイルのサイズが大きい(500k程度)と、時間が掛かる様です。30秒ルールに引っ掛りました。

  • 対応策
    • set_time_limit(60);(実行スクリプトのみ有効)
    • php.iniの「max_execution_time」を変更する

AS/400だと、インターネットに繋いだ時に、少し(だいぶ?)遅い気がします。

とりあえず。以上で巧くいきました。