Windows XMailCFG へコマンド エイリアスを設定する
環境
- Windows XP Professional SP3
- XMail 1.26
- XMailCFG 2.36a
問題
メール受信時にプログラムを実行したい。
解決方法
- ウェブサーバにアクセスする。http://localhost/xmailcfg/
- 再度メニューから「エイリアスの管理」をクリック。
- 「コマンドエイリアスの管理はこちらへ」をクリック。
- 「コマンドエイリアス」をクリック。
- 下記を入力する。
- 「このエイリアスを新規作成」をクリック。
コマンド定義のプロセス優先度は 0 が標準値となる。
タイムアウトを 0 にしてしまうとコマンド起動時にはテンポラリ ファイルが削除されてしまう。
タイムアウトは 1 以上に設定すること。
コマンドでは @@FILE でテンポラリ ファイルのパスを参照できる。
@@FILE のパスに注意
Windows の場合 @@FILE の先頭4文字には無効な文字が入っている。
空メール受信による起動スクリプトを作成する場合
前述の @@FILE のパスに注意しながら、ラッパー スクリプトで @@FILE の内容を読み込み、標準入力へ流し込んで、主処理のスクリプトを起動する。
ラッパー スクリプトのサンプル
XMail から「php @@FILE ラッパスクリプト名 実行スクリプト名」で呼び出すことを前提にしたラッパー スクリプトのサンプル。
<?php define('LOG_PATH', 'c:\xmail.log'); $log = fopen(LOG_PATH, "a"); $data_path = substr($argv[1], 4); $prog_path = join(' ', array_slice($argv, 2)); fputs($log, "$argv[0]: $prog_path: $data_path\n"); $stdout = ''; exec("$prog_path < $data_path", $stdout, $r); fputs($log, "$argv[0]: r = $r\n"); fclose($log); ?>