CGI-BBS > 情報収集 > フォームメール > フォームメールauの携帯でエラーが出る。


カレッヂ
カレッヂ


質問者 au  投稿日 2007/1/16(火) 19:19:42
form2mail.cgiを使用しています。
パソコンやau以外の携帯から送信すると送信できるのですが、
auの携帯からフォームメールを使用すると「送信する前に確認画面を出す」にチェックを入れると
cgi-lib:reached end of input while seeking end of headers.
Format of CGI input is wrong.
以下略
のエラーメッセージが出て送信できません。
「送信する前に確認画面を出す」のチェックをはずすと問題なく送信できます。
何か対処方法はないでしょうか?
au側の問題でしょうか?

【習熟度】初めて

回答者 rescue  [削除]  投稿日 2007/1/17(水) 13:59:32
確認しないで送信する場合、CGIライブラリ(cgi-lib.pl)を使わないで処理されます。
ライブラリは、バイナリデータ(添付ファイル)の送信を処理するために使われます。
CGIライブラリはインターネットの世界ではかなり標準で使われているもので、
標準的な仕様で使う限り、特に問題はないように思います。そういう意味で言えば、
auのサーバを経由している際に、独自のヘッダレスポンスを使っているのかな?
と思わざるを得ません。

フォームメール自体、携帯で利用されることを前提に設計していません。
携帯でもPC用のページを見られる機種が出てきたのも、まだ最近のことですね。

添付ファイル送信を使っていないのであれば、WebFORMを使ってみてください。
WebFormは同様の送信CGIですが、添付ファイルには対応していないので、
CGIライブラリも使っていません。

http://www.rescue.ne.jp/cgi/webform/

ちなみに、エラーで検知される部分は次の部分でした。

     HEAD:
      while (($lpos = index($buf, "\r\n\r\n")) == -1) { 
        if ($left == 0  && $buf eq '') {
	  foreach $value (values %insfn) {
            unlink(split("\0",$value));
	  }
	  &CgiDie("cgi-lib: reached end of input while seeking end of " .
		  "headers. Format of CGI input is wrong.\n$buf");
        }
        die $@ if $errflag;
        $head .= substr($buf, 0, $bufsize);
        $buf = substr($buf, $bufsize);
        $amt = ($left > $bufsize ? $bufsize : $left); #$maxbound==length($buf);
        $errflag = (($got = read(STDIN, $buf, $amt, length($buf))) != $amt);
        die "Short Read: wanted $amt, got $got\n" if $errflag;
        $left -= $amt;
      }

返信(回答)する

 


Web裏技