2012年3月27日: 【FX.php】ファイルメーカーでメール自動受信

【ソリューション事業部 井上】
久しぶりのブログ、久しぶりの技術ネタです。
興味のない方…多いかもしれません。
どうぞ遠慮なく、読み飛ばしてください。


さて、
社内では一部の業務でファイルメーカー(FMS11)を使用しているのですが、
受信したメールをファイルメーカーへ自動取込みしたいという要望がありました。
初めての試みで手さぐりでのスタートでしたが、なんとか運用開始まで至りましたので
今回はそのお話です。
検討内容は以下の2点、
(1)ファイルメーカーへのインポート方法
(2)popメール受信方法
まず、(1)ファイルメーカーへのインポート方法について。
ファイルメーカーへのインポート方法については、FX.phpを使用しました。
プラグインである「filemaker mailit」「mailMakerPop」
もしくは、FMSの「ODBC/JDBC」「FileMaker API for PHP」という選択もありますが、
とりあえずはシンプルに?スタンダードに?xmlでいきます。
1.ファイルメーカーサーバ側の設定
・WEB公開エンジン起動
2.ファイルメーカーファイルのアクセス権設定
・拡張アクセス権で「fmxml」へのアクセス設定を追加
3.phpでアクセスして登録実行

SetDBData('sample.fp7','sample');
$fx->SetDBUserPass('user','passwd');
$fx->FMDBOpen();
//フィールドセット
$fx->AddDBParam('test', 'test');
//スクリプト実行したい時は、
$fx->AddDBParam('-script','testScript');
//実行
$fx->FMNew();
?>

基本的にはこれだけでOKでした。
ファイルメーカーのファイルのアクセス権限やカラム名で間違いが無ければきっと動作するはず。
登録に失敗した場合でもエラーコードが返ってくるので、ソースを追っかければなんとかなります。
続いて、(2)popメール受信。
ファイルメーカーへの登録にはphpを使用したので、ここもできればphpを。
ライブラリ「QdmailReceiver」を使用します。
多少の不具合が確認されたので、受信テストを繰り返しソースの調整をしてとりあえず完成。
文字化け、機種依存、htmlメールの取得と…メール扱う人の苦労を垣間見ました。
結構大変ですね。。
さて、これで完成かと思いきや、メールには添付ファイルが付いてきます。
ファイルメーカーサーバとwebサーバ(php)は別サーバです。どうしたものか。。
ファイルメーカーからアクセスするには、ファイルサーバーへの保存の必要に迫られます。
せっかくなので、ここまできたらライブラリを活用しようと、Pear/FTPを選択。
こちらも残念ながら若干ソースを調整しましたが、なんとか無事動作しました。

login($user, $pass);
$ftp->cd($workDir);
//アップロード
$ftp->putRecursive($localPath, $filename, true);
$ftp->chmodRecursive($filename, $permission);
?>

これで一通りの流れは完成です。
あとは頑張ってファイルメーカー側の作り込みですね。
メール受信のトリガーはcronではなく、一旦ファイルメーカー側にボタンを配置する形をとりました。
一連の流れは、
1.ファイルメーカーのボタンを押す

2.phpを実行して、メール受信実行

3.ファイルメーカーへレコード追加
添付ファイル保存(完了)
こうやって振り返ってみるとシンプルなんですが、FX.phpはネット上の情報が少く、
メール受信はソースの解析に一苦労と、なかなか手間のかかる作業でした。
何はともあれライブラリの作者の方に感謝です。
最後まで読んで頂いて有難うございます。
では、このバトンを千葉へ!!

カテゴリー:
| 投稿者:
DAブログ | DAホールディングス(エクスショップ&ガーデンプラス)

コメント

  1. spika@o-seven より:

    Apple関係のmultipartは酷い仕様のバージョンがあるので、ガチューイクダサァーイ。最近のは写真も回るし。

  2. inoue より:

    コメント有難うございます!
    そうですね、i系やWEBメールの仕様(?)には当面苦労しそうです。
    写真が回るんですか。。
    そんなメールが来ない事を祈っておきますw

  3. tseaster より:

    ちなみにFileMakerServer12でも同様に動作致しますか?

  4. inoue より:

    >tseasterさん
    FMS12では動作検証してないのでわからないですが、
    最新版のFX.phpを使用すれば対応は可能そうな感じがしますね。
    下記ご参考まで。
    http://www.slideshare.net/f