このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

FormPageから送られてくるメールデータをデータベースに?

発言者:裕次郎
( Date Wednesday, May 27, 1998 15:41:23 )


いつもこの会議室にはお世話になってます。

さて、顧客から次のような依頼がありこの際マックサーバで処
理できないか勉強してみようと思ってます。

顧客のサーバにあるフォームページから入力されるメールデー
タをそのまま弊社のマックサーバに転送する。
そのデータをマックでデータベース化する。
最後に月単位で集計して「紙」に出力して納品する。。
っということなのですが、これはファイルメーカーでどこまで
対応出来るのでしょうか?

フォームページの内容はアンケートと資料請求です。
月単位の集計はアンケート部分をグラフ化して紙面上で見やす
くレイアウトしなくてはなりません。
(フォーマット考えなくちゃ。。)
資料請求部分は毎日見やすくまとめてファックス送る(笑)の
が条件です。。

まず、メールで送られてくるデータをデータベース化する事は
可能なのでしょうか?
そこから問題があるような。。。(笑)

またファイルメーカでできますか?

皆様のお知恵を拝借できませんか?

裕次郎 さんからのコメント
( Wednesday, May 27, 1998 15:44:49 )

言い忘れましたが、自動で行うにはどこまで出来るのかも教えて
いただければ。。。。

内容がわかりにくいようでしたらお叱りのお言葉を下さい。

田中求之 さんからのコメント
( Wednesday, May 27, 1998 16:13:33 )

メールが届くアドレス、FormPage からのメール専用のものですか? それとも
普段の仕事などに使っているメールアドレスでしょうか?

もし受付専用のメールアドレスがあるのでしたら、メールをデータベース(ファイル
メーカー)に取り込むところまでは自動化できます。

取り込んだデータの集計などは、ファイルメーカーのスクリプトなどを使って
自動化することは可能でしょう(このあたりはもっと詳しい方がいっぱいいらっ
しゃいますので、私はコメントを控えます)

他のメールに混じって、Form からのデータも届くということであれば、当然の
ことながら、必要なメールをえり分ける作業が必要になりますよね? Eudora 
などのフィルタ処理を行えるメールソフトをお使いの場合には、この分は半自動
化できます。

>顧客のサーバにあるフォームページから入力されるメールデー
>タをそのまま弊社のマックサーバに転送する。

という部分ですが、どのように転送されてくるのでしょうか? 自動化の鍵の
一つはこの点にあります。

裕次郎 さんからのコメント
( Wednesday, May 27, 1998 17:18:45 )

>メールが届くアドレス、FormPage からのメール専用のものですか? それとも
>普段の仕事などに使っているメールアドレスでしょうか?

はい、専用のメールアドレスを用意します。
他のメールと混じる事はありません。

>という部分ですが、どのように転送されてくるのでしょうか? 自動化の鍵の
>一つはこの点にあります。

クライアントが資料請求やアンケート分析が出来ないのでそのままフォームで
入力されたフォームメールをこちらのサーバにメールで転送します。
日本語コードへの変換はこの時点でする予定です。

田中さんのご意見では自動化する事ができそうなので力が沸いてきました(笑)。

できればもう少し具体的、もしくは参考HP等を教えて頂ければ本当にありが
たいのですが。。

(ちょっと甘えすぎですみません。。)

田中求之 さんからのコメント
( Wednesday, May 27, 1998 17:37:29 )

フォームメールというのは、<FORM METHOD=POST ACTION="mailto:xxx@zzz.co.jp">
というタグを使って、メールで送られてくるフォームのことでしょうか?


裕次郎 さんからのコメント
( Monday, June 08, 1998 15:03:26 )

ぎょえ。
すみません、質問しっぱなしで急に出張が入りとんだ失礼して
しまいました。

>フォームメールというのは、<FORM METHOD=POST ACTION="mailto:xxx@zzz.co.jp">
>というタグを使って、メールで送られてくるフォームのことでしょうか?

はい、そのページにはそうなります。
メールアドレスが弊社のアドレスになるわけです。
これが問題なのでしょうか。

田中求之 さんからのコメント
( Monday, June 08, 1998 15:16:47 )

>これが問題なのでしょうか

いえ、むしろその方が、データベースへの取り込み処理には好都合なんですよ。

MAILTO で送られてくるフォームのデータは、 URL 形式になっています。
このデータであれば、処理の時点で、確実にフィールド毎のデータに分ける
ことが簡単にできるんです。普通のメール(日本語で書かれたメール)を
データベースの項目ごとに切り分ける方が、よほど面倒なんですよ。


ということで、

・ action=mailto のタグを使った FORM からのデータが、受付専用のアドレスに
送られてくる

ということですね? あとは、何種類の FORM を使うのかさえ分かれば、システムは
組めますよ。複数の FORM ページを使う可能性があるときには、使用された FORM
によって処理を切り替える必要がありますが、もし1種類なのであれば、データベース
の切り替えなどは不要になります。

裕次郎 さんからのコメント
( Monday, June 08, 1998 17:25:35 )

>ということですね? あとは、何種類の FORM を使うのかさえ分かれば、システムは
>組めますよ。複数の FORM ページを使う可能性があるときには、使用された FORM
>によって処理を切り替える必要がありますが、もし1種類なのであれば、データベース
>の切り替えなどは不要になります。

フォームのページは一種類、というか一ページです。
何種類というのは、そのページの入力項目数のことでしょうか?

聞いている限りできそうなので、チャレンジしてみようと思うのですが、何から手を付け
ていいのやら。。(TT)。。
まずはファイルメーカーサーバからかな。。。。
どこか参考になるサイトありませんか?。。

田中求之 さんからのコメント
( Monday, June 08, 1998 17:50:27 )

あ、ページは一種類なんですね。でしたら、比較的簡単になります。

>聞いている限りできそうなので、チャレンジしてみようと思うのですが、何から手を付け
>ていいのやら。。(TT)。。

1週間ぐらいかかってよいなら、サンプルを作りますよ。 POP サーバーからメールを
落とす部分がネックになるかなと思っていたのですが、RealBASIC を使って、
AppleScript でコントロールするメール・ダウンローダーが簡単に作れる
目処がつきましたので。

ただし、ご自分の環境にあわせてカスタマイズするために、ファイルメーカーを AppleScript
でコントロールするための、基本的な知識(スクリプトでデータの入力ができるように
なればよい)は必要になります。

裕次郎 さんからのコメント
( Monday, June 08, 1998 18:11:23 )

>1週間ぐらいかかってよいなら、サンプルを作りますよ。

お、お、お願いしたい!
って、こんな事お願いしてもいいのだろうか。。。。(笑)

下準備勉強しまーす!

田中求之 さんからのコメント
( Thursday, June 18, 1998 18:26:31 )

AppleScript で動かす POP アクセスソフトを作り、手元ではメール -> FMP の
自動登録に成功しました。

サンプルをまとめますが、FORM のタグはどのようなものになっていますか?
チェックボックスやラジオボタンがあると少し面倒なことになりますが、
とりあえずゲストブックのような単純なものでサンプルを組みますね。

田中求之 さんからのコメント
( Friday, June 19, 1998 16:34:42 )

とりあえず、サンプルを作って登録しておきました。

REALbasic で作った、getPOP という POP サーバーからメールをダウンロードする
(デコード等は一切行わずに、ベタで落とす)アプリケーションと、落としたファイルを
デコードしてファイルメーカーに登録するスクリプトのセットです。



→  Mail_Importer.hqx

田中求之 さんからのコメント
( Saturday, June 20, 1998 15:54:54 )

上記の Mail_Importer の中にいれてある getPop というアプリケーションは、
一応 (^_^;; AppleScript でコントロールする汎用的なツールとして作ってあり
ますので、参考までに使い方(仕様)を説明しておきます。

基本的には、POP サーバーからメールをダウンロードするためのソフトです。

tell application "getPOP"
  download mails "192.168.0.1" user "tanaka" password "motoyuki" spool folder file "MacHD:Spool:" with deleteing
end tell

というスクリプトで、POP サーバー(メールサーバー)の tanaka というアカウントのメールを
"MacHD:Spool:" というフォルダーにダウンロードします。その際、一つのメールが
1つのファイルになり、日付+時間+セッション通し番号 というファイル名が付けられます

また、メールはデコードや漢字コード変換などの処理は一切行われません。POP サーバー
からのリプライも含んだベタの形で落ちます。ただし、改行コードだけは return に変換
されます。

上記のスクリプトの最後の部分の with deleteing を without deleteing に
すると、サーバーからメールを落としますが、サーバーから削除は行いません。
たとえば、普段はメーラーで読んでいるけれど、急場をしのぐために Web でメール
を読めるシステムを組む、といった場合には、このオプションを使うことになり
ます。


スクリプトは "OK" か "BUSY" をリプライとして返します。"OK" はダウンロード
のセッションを開始した、ということを示しており、ダウンロードが終了したという
ことではありません(非同期でダウンロードを行います)。また、"BUSY" が返った
時には、すでに別のダウンロードセッションの処理中につき、リクエストは受け付け
られないということを意味しています。


download mails コマンド以外に、session status (ダウンロード中なら true
を返す)、count (=最後のセッションでスプールに指定されたフォルダーの中の
ファイルの数を返す)、そして zap folderitem (=指定したファイルの削除)
を補助として組み込んであります。


使用上の注意: getPop をバックグランドで動かす際には、セッションが終了
するまで、けっこう時間がかかることがあります。ですから、ダウンロードの指示を
出してから、session status が false になるまでリピートで待ち続けるという
スクリプトを組むと(バックグランドのアプリケーションに回される CPU タイムが
少なくなるため)、フリーズしてしまったのではないかと思われるような状況に
陥ります。ですから、download mails コマンドを送ったらスクリプトの実行を
終了し、idle ハンドラーで status を見ながら処理を行うといった工夫が必要に
なります。この点は注意してください(ですから、CGI でメールをダウンロードして
表示する、といった処理には使えません)。

田中求之 さんからのコメント
( Saturday, June 20, 1998 15:59:48 )

参考までに、getPOP の REALbasic のプロジェクトを登録しておきます。

→  GetPop_proj.hqx