さくらのレンタルサーバーで、実行ファイル添付のメールを削除(その2)

その1(pearインストール、phpと.mailfilterの動作確認)の続きです

その1の動作チェックで保存した、実行型ファイルを添付したメールのソースファイル(下記では exemail.eml)を利用して Webから基本的なエラーやPEARの利用可を確認しておきます

exemail.php を下記のように書き換えて、Webから開いてみます
  1. <?php  
  2.  // エラー表示  
  3.  ini_set('display_errors', 1);  
  4.   
  5.  // タイムゾーンとPEARのパス  
  6.  date_default_timezone_set('Asia/Tokyo');  
  7.  set_include_path("/PEARスクリプトの場所/PEAR");  
  8.   
  9.  // PEAR  
  10.  require_once("Mail.php");  
  11.  require_once("Mail/mimeDecode.php");  
  12.   
  13.  // メール取得  
  14.  // $data = file_get_contents("php://stdin");  
  15.  // file_put_contents("/スクリプトの場所/exemail.eml", $data);  
  16.  $data = file_get_contents("/スクリプトの場所/exemail.eml"); // メール着信の代わり  
  17.   
  18.  // メール読み込み  
  19.  $params['input'] = $data;  
  20.  $params['include_bodies'] = true;  
  21.  $params['decode_bodies']  = true;  
  22.  $params['decode_headers'] = true;  
  23.  $params['crlf'] = "\r\n";   
  24.   
  25.  $maildata = Mail_mimeDecode::decode($params);  
  26.   
  27.  echo "ok";  
  28.  exit(1);  
  29. ?>  

上記の解説

// エラー表示
エラーの可視化

// タイムゾーンと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(完結)へつづく

コメント