さくらのレンタルサーバーで、実行ファイル添付のメールを削除(その2)
その1(pearインストール、phpと.mailfilterの動作確認)の続きです
その1の動作チェックで保存した、実行型ファイルを添付したメールのソースファイル(下記では exemail.eml)を利用して Webから基本的なエラーやPEARの利用可を確認しておきます
exemail.php を下記のように書き換えて、Webから開いてみます
上記の解説
// エラー表示
エラーの可視化
// タイムゾーンとPEARのパス
php.ini の設定と重複していますが .mailfilter からの呼び出しには php.iniの情報が使われないようすなので、個別に記載
// PEAR
ライブラリの読み込み
// メール取得
stdinからメールを読み込む代わりに、その1で保存しておいたファイルを取り込みます
// メール読み込み
PEARへメールを読み込ませます
include_bodies, decode_bodies, decode_headers をtrueにします
※デコード類trueは、非ascii 添付ファイル名の解析に必要
作成した exemail.php を Webから開いて、エラーなどを潰していきます
エラーや警告が無く、ok と表示されれば、順調です
ここまでくれば、メールの添付をチェックして、exitで0(実行添付なし)か1(実行添付あり)を返すだけ
その3(完結)へつづく
その1の動作チェックで保存した、実行型ファイルを添付したメールのソースファイル(下記では exemail.eml)を利用して Webから基本的なエラーやPEARの利用可を確認しておきます
exemail.php を下記のように書き換えて、Webから開いてみます
<?php // エラー表示 ini_set('display_errors', 1); // タイムゾーンとPEARのパス date_default_timezone_set('Asia/Tokyo'); set_include_path("/PEARスクリプトの場所/PEAR"); // PEAR require_once("Mail.php"); require_once("Mail/mimeDecode.php"); // メール取得 // $data = file_get_contents("php://stdin"); // file_put_contents("/スクリプトの場所/exemail.eml", $data); $data = file_get_contents("/スクリプトの場所/exemail.eml"); // メール着信の代わり // メール読み込み $params['input'] = $data; $params['include_bodies'] = true; $params['decode_bodies'] = true; $params['decode_headers'] = true; $params['crlf'] = "\r\n"; $maildata = Mail_mimeDecode::decode($params); echo "ok"; exit(1); ?>
上記の解説
// エラー表示
エラーの可視化
// タイムゾーンとPEARのパス
php.ini の設定と重複していますが .mailfilter からの呼び出しには php.iniの情報が使われないようすなので、個別に記載
// PEAR
ライブラリの読み込み
// メール取得
stdinからメールを読み込む代わりに、その1で保存しておいたファイルを取り込みます
// メール読み込み
PEARへメールを読み込ませます
include_bodies, decode_bodies, decode_headers をtrueにします
※デコード類trueは、非ascii 添付ファイル名の解析に必要
作成した exemail.php を Webから開いて、エラーなどを潰していきます
エラーや警告が無く、ok と表示されれば、順調です
ここまでくれば、メールの添付をチェックして、exitで0(実行添付なし)か1(実行添付あり)を返すだけ
その3(完結)へつづく
コメント