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

現在cgiでメールフォームを作成しています。
sendmail使用、ファイルのエンコーディングはShift_JIS、改行コードLF

htmlのフォームから情報を入力し、
perlで入力内容の確認、
cgiでメール送信までは実行できました。

他の項目(件名やメールアドレスなど)はメール内容に反映されているのですが、
本文のみ空白となってしまいます。

本文に関わるコードは下記になります。
use CGI;
$cgi = new CGI();
$maintxt = $cgi->param('maintxt');
$cgi->charset('Shift_JIS');
$maintxt = $cgi->escapeHTML($maintxt);
&jcode::convert(\$maintxt,'jis');
print MAIL "Content-Type: text/plain; charset=ISO-2022-JP\n";
print MAIL "Content-Transfer-Encoding: 7bit\n";
print MAIL "$maintxt\n";

cgiは勉強中なもので、解決方法がお分かりの方がいらっしゃいましたら、
教えていただければ幸いです。

A 回答 (1件)

おそらく、ヘッダーと本文の区切りの空行が出力されていないからでしょう。


「print MAIL "$maintxt\n";」の行の前に「print MAIL "\n";」を追加すればよいかと。


ちなみに、提示されているロジックより前の方で

 open (MAIL, "| sendmailのパスとオプション") ・・・

とやっていると思いますが、デバグ時には一時的に

 open (MAIL, "> デバグ用のファイル") ・・・

の様にしてファイルに出力してやると確認が楽です。

この回答への補足

check_inquiry.plで内容確認を通さずにsendmail.cgiにactionのパスを指定すると解決しました。
plの方は後々調整したいと思います。

補足日時:2012/07/30 01:10
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。非常に助かりました。
print MAIL "\n";
print MAIL "本文テスト";
と記述することで本文の出力が確認できました。

デバグ時には、教えていただいたことを参考にテストしていきたいと思います。


print MAIL "本文テスト"を print MAIL "$maintxt\n";とすると内容は出力されませんでした。
plでの入力内容確認画面では$maintxtをフォームから読み込めているのですが、sendmail.cgiの方では呼び出せていないのでしょうか…
もし原因がお分かりでしたらご回答いただければ幸いです。

お礼日時:2012/07/29 13:38

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