- ベストアンサー
CGIで自動返信メール
- サイトに問い合せフォームを作成し、自分宛メールと自動返信メールが送付されるようにしたいです。
- CGIの中身を書き換えメールのヘッダに言葉を入れたいのですがうまくいきません。
- 検証(1)では回答内容の羅列のみ表示され、検証(2)では回答内容が表示されるものの自動返信メールが届かず、検証(3)では回答内容が文字化けし、自動返信メールも届きません。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
それは、とほほさんのですね。 &jcode'convert(*mailbody, "jis"); http://www.tohoho-web.com/lng/200004/00040055.htm http://www.tohoho-web.com/wwwperl1.htm
その他の回答 (1)
- naokita
- ベストアンサー率57% (1008/1745)
メールボディと合体させるように書かないとダメ・・・ そもそも、本文はどこなのでしょう? その1行上部に挿入。 送信確認画面や完了画面を作り送信前に一旦formで渡したいのなら、 もっと多機能なCGIを使わないと無理です。 メール内容だけ、「○○様へ」とか「ありがとう」や「署名」を入れたいなら 回答内容文と合体させないとダメ。
お礼
ご回答ありがとうございます! メールボディー部分のCGIは以下のようになっています。 # # メールボディを作成する # { for ($i = 0; $i < $cnt; $i++) { $mailbody .= "$FORM[$i] = $FORM{$FORM[$i]}\n"; } # "." のみの行は ". " に変換する。 # 2回繰り返さないと、2行連続で "." のみの行に対応できない # "." を ".." に変換する処理が一般的だそうだが、あえて、 # "." を ". " に変換する。 $mailbody =~ s/(^|\n)\.(\n|$)/$1. $2/g; $mailbody =~ s/(^|\n)\.(\n|$)/$1. $2/g; } なので、以下の2つの方法を試してみました。 (1)一番上に足してみる 【結果】「Internal Server Error」になってしまう # # メールボディを作成する # { &jcode'convert(*subject, "jis");←★★ここです $maibody = "お問い合わせありがとうございます";←★★ここです for ($i = 0; $i < $cnt; $i++) { $mailbody .= "$FORM[$i] = $FORM{$FORM[$i]}\n"; } # "." のみの行は ". " に変換する。 # 2回繰り返さないと、2行連続で "." のみの行に対応できない # "." を ".." に変換する処理が一般的だそうだが、あえて、 # "." を ". " に変換する。 $mailbody =~ s/(^|\n)\.(\n|$)/$1. $2/g; $mailbody =~ s/(^|\n)\.(\n|$)/$1. $2/g; } (2)一番下に足してみる 【結果】送信完了画面、自分宛メール、自動返信メールともに 「お問い合わせありがとうございます」がどこにも表示されない # # メールボディを作成する # { for ($i = 0; $i < $cnt; $i++) { $mailbody .= "$FORM[$i] = $FORM{$FORM[$i]}\n"; } # "." のみの行は ". " に変換する。 # 2回繰り返さないと、2行連続で "." のみの行に対応できない # "." を ".." に変換する処理が一般的だそうだが、あえて、 # "." を ". " に変換する。 $mailbody =~ s/(^|\n)\.(\n|$)/$1. $2/g; $mailbody =~ s/(^|\n)\.(\n|$)/$1. $2/g; } { &jcode'convert(*subject, "jis");←★★ここです $maibody = "お問い合わせありがとうございます";←★★ここです } 相変わらず手探りですがまた教えていただけると助かります。。 お願いいたします!
補足
追記です。 メール本文CGIを追加してみたら(←★★部分) 以下のようなエラーになってしまいます (1)メール送信完了画面 入力した本文:正常 入力内容:文字バケ (2)自分宛メール 入力した本文:正常 入力内容:文字バケ (3)送信確認メール 入力した本文:文字バケ 入力内容:正常 # # メールボディを作成する # { &jcode'convert(*subject, "jis");←★★ $mailbody .= "お問い合わせありがとうございます。\n";←★★ $mailbody .= "以下の内容の応募が応募フォームよりありました。\n";←★★ $mailbody .= "《応募内容》\n"; for ($i = 0; $i < $cnt; $i++) { $mailbody .= "$FORM[$i] = $FORM{$FORM[$i]}\n"; } # "." のみの行は ". " に変換する。 # 2回繰り返さないと、2行連続で "." のみの行に対応できない # "." を ".." に変換する処理が一般的だそうだが、あえて、 # "." を ". " に変換する。 $mailbody =~ s/(^|\n)\.(\n|$)/$1. $2/g; $mailbody =~ s/(^|\n)\.(\n|$)/$1. $2/g; } 文字バケを回避するにはどうしたらいいでしょうか。。。 引き続きお願いいたします!
お礼
ありがとうございます!! おっしゃるとおり、とほほさんのところのでした。 教えていただいたサイトを参考に修正したところ 見事文字バケが解消しました!! もう数日間ずっと文字バケと格闘してきましたが おかげでやっと解決できました!! 本当にありがとうございます!!!