人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile


●質問者: Tomo
●カテゴリ:コンピュータ ウェブ制作
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

質問者から

以下、formmail.cgiの中身です。
http://planetscuba.blog5.fc2.com/blog-entry-2001.html


5 ● rouge_2008
●300ポイント ベストアンサー

「# メールボディを作成する」の処理内(※295行目の「$mailbody .= "$naiyo_o\n\n";」から318行目のforループの処理終了「}」までの変更になります。)

# $mailbody .= "$naiyo_o\n\n"; # この行の前に次の処理を追加して、$mailbodyには変数で代入します。
$naiyo_o = "$naiyo_o\n\n";
$naiyo_o =~ tr/+/ /;
$naiyo_o =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg;
$naiyo_o =~ s/[\r\n]+/\n/g;
&jcode'convert(*naiyo_o, "jis");

$mailbody .= $naiyo_o;

for ($i = 1; $i < $cnt-3; $i++) {
if($FORM{$FORM[$i]} ne ""){

if($FORM[$i] eq $onamae){
$first = "\n代表\の方の情報----------------------------------------------\n";
$first =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg;
&jcode'convert(*first, "jis");
$mailbody .= $first;
}

if($FORM[$i] eq $onamae2){
$second = "\n2人目の方の情報----------------------------------------------\n";
$second =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg;
&jcode'convert(*second, "jis");
$mailbody .= $second;
}

if($FORM[$i] eq $onamae3){
$third = "\n3人目の方の情報----------------------------------------------\n";
$third =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg;
&jcode'convert(*third, "jis");
$mailbody .= $third;
}

if($FORM[$i] eq $onamae4){
$fourth = "\n4人目の方の情報----------------------------------------------\n";
$fourth =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg;
&jcode'convert(*fourth, "jis");
$mailbody .= $fourth;
}

$mailbody .= "$FORM[$i] = $FORM{$FORM[$i]}\n";
}
}


※エンコードされていない箇所とエンコードされている箇所が混在していた為、文字化けしていたようですので、すべてエンコードされるように変更しました。
※今まで受信したメールには、フォームで入力した人数分の情報とコメントが記載されていたでしょうか?
上記のコードでは届いていなかった可能性があります。
入力されたすべての情報を受信したい場合は、次の記述を使ってください。(※全員の情報送信済みだったり、コメントに質問などが書かれていた場合、話がかみ合わなかったのではないかと思うのですが・・・)

# $mailbody .= "$naiyo_o\n\n"; # この行の前に次の処理を追加して、$mailbodyには変数で代入します。
$naiyo_o = "$naiyo_o\n\n";
$naiyo_o =~ tr/+/ /;
$naiyo_o =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg;
$naiyo_o =~ s/[\r\n]+/\n/g;
&jcode'convert(*naiyo_o, "jis");

$mailbody .= $naiyo_o;

for ($i = 1; $i < $cnt; $i++) {
if($FORM{$FORM[$i]} ne ""){

if($FORM[$i] eq $onamae){
$first = "\n代表\の方の情報----------------------------------------------\n";
$first =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg;
&jcode'convert(*first, "jis");
$mailbody .= $first;
}

if($FORM[$i] eq $onamae2){
$second = "\n2人目の方の情報----------------------------------------------\n";
$second =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg;
&jcode'convert(*second, "jis");
$mailbody .= $second;
}

if($FORM[$i] eq $onamae3){
$third = "\n3人目の方の情報----------------------------------------------\n";
$third =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg;
&jcode'convert(*third, "jis");
$mailbody .= $third;
}

if($FORM[$i] eq $onamae4){
$fourth = "\n4人目の方の情報----------------------------------------------\n";
$fourth =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg;
&jcode'convert(*fourth, "jis");
$mailbody .= $fourth;
}

# 項目名の比較の為にエンコードします。※お名前?お名前4についても、項目名が固定で変更予定がないのでしたら、+記号の変換と改行コードの変換の行は削除するかコメントアウトしても大丈夫です。
$comment = 'コメント';
$comment =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg;
&jcode'convert(*comment, "jis");

if($FORM[$i] eq $comment){
$comment = "\nコメント(ご質問・ご連絡など)-------------------------------\n";
$comment =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg;
&jcode'convert(*comment, "jis");
$mailbody .= $comment;
}

$mailbody .= "$FORM[$i] = $FORM{$FORM[$i]}\n";
}
}



※コメントでの質問ですが、カスタマイズしている箇所がバージョンアップの変更点に影響している場合、コピー&ペーストしただけでは動かない可能性もあります。


Tomoさんのコメント
すごいです。 なおりました。 何とお礼を申し上げてよいものか。 本当に助かりました。 ありがとうございました。 PS:修正前のフォームも人数分の情報とコメントは、送られてきていました。知識がないので何故かはわかりません。もちろんGmailでは文字化けしていましたが・・。

rouge_2008さんのコメント
修正前にも、コメントも送信メールに含まれていたのですね。良かったです。 hiddenやメールに記載しない項目の分だけループの回数を少なくしているようですので、おそらく動作に問題はないと思います。 下のコードは、代表者、2人目...の参加者のようにコメントにも区切り文字を出力するように変更してあります。良かったら「for ($i = 1; $i < $cnt; $i++) {」を「for ($i = 1; $i < $cnt-3; $i++) {」に変更して使ってみてください。 ポイントとベストアンサーありがとうございました。

Tomoさんのコメント
ご丁寧にコメントありがとうございます。 いただいたコードも試してみます。 また機会がございましたら、よろしくお願いいたします。

6-7件表示/7件
4.前5件|次の5件6.
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ