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

一つのFORMで二つのACTIONを使うには?

発言者:M.Umeda
( Date Thursday, November 07, 1996 02:48:10 )


田中様、皆様ひごろから大変お世話になり感謝しております。

初めて質問いたしますが、
一つのFORMで二つのACTIONを使うことは可能でしょうか?
具体的に言うと
<FORM METHOD="POST" ACTION="/cgi/sendForm.acgi" ACTION="mailto:umeda@realize.or.jp">
<INPUT TYPE="hidden" NAME="送信先:" VALUE="umeda@realize.or.jp">
<TEXTAREA name="メッセージ:" ROWS=10 COLS=60>
<INPUT type="submit" value="送信">
<INPUT type="reset" value="クリア">

こんな風にです。これではうまく機能しませんが、
一つのボタンを押すことによって"メッセージ"が二つの宛先に
いっぺんに送ることができるようにしたいのです。
同じ内容をcgiやmailに送るたび別々のフィールドとボタンを
用意するのはCoolでないですよね。

良い方法がございましたらどなたかご指導下さい。

田中求之 さんからのコメント
( Thursday, November 07, 1996 14:54:58 )

FORM のページで2つの ACTION を同時に使うことはできません(2つの宛先に同時に
送ることはできません)。

ですから、もしサーバーに記録を残した上で、メールで自分宛にも送りたいという
ことであれば、CGI の中からメールを送信する必要があります。

デコードする前の post_arg をそのまま転送するメールであれば、漢字コードの
処理などは不要ですので、フリーで公開されているメール送信用のツールなども
使えると思います(そのかわり、受け取ったメールを自分でデコードする必要が
ありますが)。

フリーのメール送信用ツールとしては Acme Tech の MondoMail という
のがあります。

→  MondoMail (Acme Tech)

大西 恒樹 さんからのコメント
( Friday, November 08, 1996 16:48:07 )

UmedaさんのsendForm.acgiがどのような処理をするのかわかりませんが、
単に2ヵ所以上のアドレスに送りたいのなら、スクリプトで、
send_messageという送信用ハンドラを立てた上で、

set theResult to send_message ("umeda@realize.or.jp","User_Message",myData)
set theResult2 to send_message ("umeda2@realize.or.jp","User_Message",myData)

としてやれば良いのではないでしょうか?デコードしたフォームの内容を
あらかじめmyDataに収めることになりますが。

梅田政昭 さんからのコメント
( Friday, November 08, 1996 18:23:55 )

田中求之様、大西恒樹様コメントありがとうございました。
大変参考になりました。

>一つのFORMで二つのACTIONを使うには?
>ACTION="/cgi/sendForm.acgi"
と書いたため不明な部分がありました。
「単に2ヵ所以上のアドレスに送りたい」と言うことなのです。
sendForm.acgiでURL変換されて読めなくなった日本語を変換して
Aさんに返送し、「フォームからAさんに送ったよ。」と報告が
umeda@realize.or.jpへ入るようにしたいのです。

コメントをお手本に今から試してみます。
引き続きよろしくお願いいたします。

大西 恒樹 さんからのコメント
( Friday, November 08, 1996 20:44:28 )

それでしたら、まずフォームの内容をデコードしてmyDataに収め、Message_Sent
か何かにmyDataと"Aさんに送りましたよ"というようなメッセージを収めてから、

set theResult to send_message ("A_san@xxxx.or.jp","User_Message",myData)
set theResult2 to send_message ("umeda@realize.or.jp","User_Message,Message_Sent)

でエラーの時の処理を入れて、"Aさんに送りました"というようなメッセージを
returnしてやればいかがでしょう?

メール送信用ハンドラは、田中先生のsendMailなどを参考にするのが
速いでしょう。