- 締切済み
単純なお問い合わせフォーム
お問い合わせのフォームを作り、確認、最後にメールを飛ばす仕組みを作っているのですが、メールにインプットされたデータが入ってこない状態で届きます。どうか助けてください。(息切れ) *下記参照 #フォームの情報を初めに格納する所 省略 #-------------------------------↓ if ( $ACT eq 'ckt' ){ &kakunin; } elsif ( $ACT eq 'ckt2' ) { open (KEIJI, "<keijiban.dat") || die "File 'keijiban.dat' Open Error."; # ファイルの内容を1行単位ですべて配列allに読み込む @all = <KEIJI>; # すべてのデータについて繰り返す foreach (@all){ # 1行の文字列をコロンを目印にして項目に分割する ($firstname) = split(/:/, $_); # 1件分のデータを表示するサブルーチン &sendmail; } close(KEIJI); #------------------------------------↑ sub kakunin{ $new_data = "$firstname\n"; &jcode'convert(*new_data, 'sjis'); open(KEIJI, "<keijiban.dat") || die "File 'keijiban.dat' Open Error."; # 過去のデータを全て配列に読み込む @all_data = <KEIJI>; close(KEIJI); # 配列の先頭に新規データを追加 unshift(@all_data, $new_data); open(KEIJI, ">keijiban.dat") || die "File 'keijiban.dat' Open Error."; #flock(KEIJI, 2); # (新規データ+過去データ)をファイルに上書き print KEIJI @all_data; #flock(KEIJI, 8); close(KEIJI); # 書きこみ完了メッセージ &write_ok; exit; } sub sendmail { #以下省略メール送信プログラム exit; }
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- natural
- ベストアンサー率37% (419/1115)
外していたらごめんなさい。(^_^; ReadParse(*in);以下の処理 ↓ ReadParse; while(($k,$v) = each %in) { &jcode'convert(*v,"sjis"); $in{$k} = $v; } #フォームの情報を初めに格納する所 $ACT = "$in{'ACT'}"; $name = 'お問合せ'; $from = "$in{'from'}"; $subject = 'お問合せ'; $body = 'お問合せ'; #●オリジナル挿入開始 $firstname = "$in{'firstname'}"; $to = 'love-0720@nifty.com'; としてみて下さい。 尚、念のためsendmailの print MAIL "TO: $to\n"; も ↓ print MAIL "To: $to\n"; にしておいて下さい。 また、print MAIL "Content-Type: text/plain;\n\n"; の前に print OUT "Content-Transfer-Encoding: 7bit\n"; があった方が良いかもしれません。 お試し下さい。 #本当はopen(MAIL, "| /usr/lib/sendmail -t"); にもエラー処理があった方が良い様な気がしますが・・・。
- natural
- ベストアンサー率37% (419/1115)
とりあえず質問内容と記載されているソース部分が合致していない気がします。 まずはフォームの値読み出し(ReadParse)から加工と、実際のメール送信部分を記載された方が良いですよ。(^_^)
補足
サブルーチン全部のソースを下記に示しました。 全体的な動きは最初に書いたとおりになっています。 ちなみに一時データ格納場所は*.dataファイルに格納することになっています。 ●補足1 &ReadParse(*in); #フォームの情報を初めに格納する所 $ACT = "$in{'ACT'}"; $name = 'お問合せ'; $from = "$in{'from'}"; $subject = 'お問合せ'; $body = 'お問合せ'; #●オリジナル挿入開始 $firstname = "$in{'firstname'}"; $to = 'love-0720@nifty.com'; ●補足2 sub sendmail { #送信前処理 &jcode'convert(*subject,'jis'); &jcode'convert(*body,'jis'); # send mail open(MAIL, "| /usr/lib/sendmail -t"); print MAIL "TO: $to\n"; print MAIL "From: $from\n"; print MAIL "Subject: $subject\n"; print MAIL "Content-Type: text/plain;\n\n"; print MAIL "\n"; print MAIL "---------------------------------------------\n"; print MAIL " 名前:$name\n"; print MAIL " 内容:$body\n"; print MAIL " お名前:$firstname $secondname\n"; print MAIL " かな:$kanafirstname $kanasecondname\n"; print MAIL " 所在都道府県 :$area1 $area2\n"; print MAIL " 電話番号:$telno\n"; print MAIL " 性別:$sex\n"; print MAIL " メールアドレス:mailto:$mailad\n"; print MAIL "お問合わ、ご相談内容:"; print MAIL " $con1\n"; print MAIL "---------------------------------------------\n"; close(MAIL);