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

お問い合わせのフォームを作り、確認、最後にメールを飛ばす仕組みを作っているのですが、メールにインプットされたデータが入ってこない状態で届きます。どうか助けてください。(息切れ)
*下記参照
#フォームの情報を初めに格納する所 省略
#-------------------------------↓
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;
}

A 回答 (2件)

外していたらごめんなさい。

(^_^;

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"); にもエラー処理があった方が良い様な気がしますが・・・。
    • good
    • 0

とりあえず質問内容と記載されているソース部分が合致していない気がします。


まずはフォームの値読み出し(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);

補足日時:2001/09/09 17:19
    • good
    • 0

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