アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんにちわです!

会社でメールフォームのカスタマイズをすることになったのですが
どうしても出来ないのでお力をお貸し下さい!
kentさんのpostmailを使用してます。

http://www.kent-web.com/data/postmail.html

プルダウンメニューから選択された項目によって送信先を変えたいのですが
うまくフォームからの値をCGI側で拾ってくれてない(?)のです。
ネットで検索してこれだと思うのを試したのですがうまくいかず。。。

現状はHTML側では

<SELECT name="mailto">
<OPTION value="0" selected>AAA</OPTION>
<OPTION value="1">BBB</OPTION>
<OPTION value="2">CCC</OPTION>
<OPTION value="3">DDD</OPTION>
<OPTION value="4">EEE</OPTION>
<OPTION value="5">FFF</OPTION>
</SELECT>

CGI側では
107行目をコメントアウトして108行目に

@addrList = ('aaa@aaa.com', 'bbb@bbb.com', 'ccc@ccc.com', 'ddd@ddd.com', 'eee@eee.com', 'fff@fff.com');
$mailto = $addrList[$FORM{'mailto'}];

495行目はそのままの

$body = "To: $mailto\n";

としてます。 上記方法だとすべてaaa@aaa.comにメールが送信されます。。。


他にも

108行目に

$mailto = $form{'mailto'};

if ( $mailto == 0)
{
$mailto = 'aaa@aaa.com';
}
elsif ( $mailto == 1)
{
$mailto = 'bbb@bbb.com';
}
elsif ( $mailto == 2)
{
$mailto = 'ccc@ccc.com';
}
elsif ( $mailto == 3)
{
$mailto = 'ddd@ddd.com';
}
elsif ( $mailto == 4)
{
$mailto = 'eee@eee.com';
}
else
{
$mailto = 'fff@fff.com';
}

495行目は同じく

$body = "To: $mailto\n";

上記方法を試しましたが、やっぱりすべての宛先がaaa@aaa.comに送信されます。

何がまちがいで、どこをどのように正せば送信先を選択できるようになるのでしょうか?
今日の18時までにはなんとか作り上げたいと思ってますのでご教授よろしくお願いします!

PS:現在の知識としてHTMLしか言語はわかりません^^;

A 回答 (2件)

多分ですが・・・



まず、cgiの中を、STDINかQUERY_STRINGで検索してください。
大抵のcgiは、この命令でhtmlからのパラメータを受け取っています。

すると、619行からの「フォームデコード」decodeと言うサブルーチンでパラメータを受け取っています。
で、ずっと見ていくと、670行からで、$in{}と言うハッシュに取り込んでいます。

で、decodeはどこから呼ばれているかを見てみると、228行目で呼ばれています。

更に、最初から107行目を通って228行目行目を見て行くと、ほとんど設定ばかり、

と言うことで、多分ですが、107行目では、まだフォームからのデータは確定していないと思います。

それに、$FORM{}と言うハッシュは、プログラム上、どこにも出てきていませんので、いつでも""です。
それと、確かperlでは、変数の大文字小文字を区別するので、$FORMと$form{}は別物だったような・・・

これで、2つの事がわかったと思いますが、場所と変数名がおかしい。
$in{mailto}で、decodeを呼び出した以降でなければ、そもそも・・・

詳しく見ていないので、後はお任せします。
間違っていたらすみません。

p.s.
フリーソフトの利用&改造はそのソフトの利用規定をお守りください。

この回答への補足

と、思いましたが結局どうすればいいかわかりませんでした(--;

補足日時:2007/09/13 13:14
    • good
    • 0
この回答へのお礼

どうもありがとうございます!

今から言われたことを参考に色々試してみます!

お礼日時:2007/09/13 13:04

テストする環境が無いので、結果はわからないのですが・・・



228行目の
$ret = &decode;
の後に
@addrList = ('aaa@aaa.com', 'bbb@bbb.com', 'ccc@ccc.com', 'ddd@ddd.com', 'eee@eee.com', 'fff@fff.com');
$mailto = $addrList[$in{'mailto'}];

を入れてみてはどうでしょうか。
    • good
    • 0
この回答へのお礼

できました!!!!!!!感動です!
本当にありがとうございました!!!!!

お礼日時:2007/09/13 14:33

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!