| FORM MAILER v0.54 設定ファイル編集の手引きFORM MAILER v0.54 の設定ファイル編集のための解説をしています。
[目次]
 
[変数名索引]
 
 
▲目次へ ▲変数名索引へ| ※ここで指定したディレクトリは、あらかじめ作成してパーミッションを 777 に変更してください。| (1)アップロードファイルを一時置いておくディレクトリ | 
|---|
 ※CGIWrap を使用している場合はパーミッション変更の必要はありません。
 ※ファイルアップロードの機能を使わない場合は、この指定は無視されます。
 |  
▲目次へ ▲変数名索引へ| | (2)システム側で表示するページのbodyタグオプション | 
|---|
 
※bodyタグオプションを指定します。| $TEXT = "TEXTオプションの値"; $BGCOLOR = "BGCOLORオプションの値";
 $VLINK = "VLINKオプションの値";
 $ALINK = "ALINKオプションの値";
 $BACKGROUND = "BACKGROUNDオプションの値";
 |  ※「#rrggbb」または「red」「white」というように指定してください。
 ※指定方法を間違うとうまく機能しない場合があります。
 |  
▲目次へ ▲変数名索引へ| 
※確認画面を出すかどうかを指定してください。| $CONFIRM_FLAG = [0|1|2]; 
| 1 | 確認する(システムレイアウト使用) |  2 | 確認する(レイアウトファイルを(3-a)で指定する) | 0 | 省略する(直接送信) |  |  ※$CONFIRM_FLAG = 0; と指定した場合でも、フォーム中に name="CONFIRM_FORCED" という入力欄があり、値が0または空欄以外のときは、確認画面を表示します。逆に、$CONFIRM_FLAG = 1; または $CONFIRM_FLAG = 2; と指定した場合でも、フォーム中に name="SEND_FORCED" という入力欄があり、値が0または空欄以外のときは、確認画面を表示せずに直接送信します。
 
 
| [HTML例] 
1. 確認画面を省略する設定のときに、フォームの送信者に確認画面を出すか選ばせる
 
2. 確認画面を出す設定のときに、フォームの送信者に確認画面を出すか選ばせる| <input type=checkbox name=CONFIRM_FORCED value="1" checked>確認画面を出す |  
| <input type=checkbox name=SEND_FORCED value="1" checked>確認画面を出さずに直接送信 |  |  |  
▲目次へ ▲変数名索引へ| 
※(3)で、$CONFIRM_FLAG = 2; と指定した場合は、ここでの指定が必須です。| $CONFIRM_TMPL = "[サーバ上のパス/] レイアウトファイル名"; |  ※サーバに置いたレイアウトhtmlのファイル名を指定します。
 ※ファイル名だけを指定した場合は、f_mailer.cgiのある場所にあるとみなします。
 |  
▲目次へ ▲変数名索引へ| 
※システムが用意したエラー画面を出すか、オリジナルレイアウトを使用するかを選択します。| $ERROR_FLAG = [0|1]; 
| 0 | システムレイアウト使用 |  1 | レイアウトファイルを(4-a)で指定する |  |  |  
▲目次へ ▲変数名索引へ| 
※(4)で、$ERROR_FLAG = 2; と指定した場合は、ここでの指定が必須です。| $ERROR_TMPL = "[サーバ上のパス/] レイアウトファイル名"; |  ※サーバに置いたレイアウトhtmlのファイル名を指定します。
 ※ファイル名だけを指定した場合は、f_mailer.cgiのある場所にあるとみなします。
 |  
▲目次へ ▲変数名索引へ| 
※フォームの入力欄が空欄(空文字列)であった場合に埋めておく文字列を指定します。| $BLANK_STR = "空欄のフィールドと置き換える文字列"; |  ※空欄のままにする場合には、この欄になにも指定しません。
 |  
▲目次へ ▲変数名索引へ| 
※フォーム内のフィールド名に対して個別に制限をかけられます。| @COND = ( [ 'フィールド名1', { 制限項目=>指定子, 制限項目=>指定子, … } ],
 [ 'フィールド名2', { 制限項目=>指定子, 制限項目=>指定子, … } ],
 …
 );
 
| 制限項目 | 指定子 | 説    明 | 
|---|
 | alt | 別名 | 項目名の別名(エラー表示に使用) |  | trim | 1 | 半角スペース、タブおよび改行(\r\n)の除去 |  | trim2 | 1 | 全角および半角スペース、タブ、改行(\r\n)の除去 |  | required | 1 | 入力必須チェック(未入力を拒否) |  | z2h | 1 | 全角英数字の半角変換 |  | d_only | 1 | 数値チェック(半角数字以外の値を拒否) |  | h2z | 1 | 半角英数字の全角変換 |  | h2z_kana | 1 | 半角カタカナの全角変換 |  | deny_rel | 1 | 機種依存文字チェック(機種依存文字を含む値を拒否) |  | len_min | バイト数 | 文字列長の下限(ここで指定した長さに満たない文字列を拒否) |  | num_min | 個数 | 選択個数の下限(checkboxなどでの選択数が指定した数に満たない場合を拒否) |  | min | 下限値 | 数値の下限(ここで指定した数値を下回る値を拒否) |  | len_max | バイト数 | 文字列長の上限(ここで指定した長さを超える文字列を拒否) |  | num_max | 個数 | 選択個数の上限(checkboxなどでの選択数が指定した数を超える場合を拒否) |  | max | 上限値 | 数値の上限(ここで指定した数値を超える値を拒否) |  | regex | 正規表現 | 正規表現 ※高度な指定です |  |  ※ {  } の中に、"制限項目=>指定子" という書き方で、カンマ区切りで複数指定ができます。
 ※同一のフィールド名に対して複数の指定をしてしまった場合、最後の指定のみ有効となります。
 ※■■のグループはそれぞれ、フィールド値が文字列か、数値か、checkboxあるいはselect式の選択肢かによって使い分けます。通常同時に指定する必要がないものです。例えば、文字列が入るフィールドに対して min や max を指定しても期待した動作をしませんし、 "min_len => 10" と指定しておいて、フィールド値に 12 と入っていた場合、文字列としてのバイト長は 2 であるため、この値は拒否されることになります。
 ※フォームに存在しない項目名を指定してしまうと、いかなる場合にもその項目への入力を促すエラーメッセージが出てしまいますので、フォームで指定した項目名と対応するように十分ご確認ください。
 ※手動での条件設定が簡単にできる設定ツールを用意しました。
 v0.5〜0.53用…http://www.psl.ne.jp/perl/f_mailer_condtool.cgi
 v0.54用…http://www.psl.ne.jp/perl/f_mailer_condtool054.cgi
 
 
| [指定例] 
1. メールアドレス入力必須指定をしたいとき(従来バージョンと同等の機能)
 
※フィールド名が "EMAIL" の場合、アドレス形式のチェックも同時に行われます。| [ 'EMAIL', { alt=>'メールアドレス', required=>1 } ], |  ※ '=>' のあとに来る 1 は、0 以外の数字であれば何でも構いません。
 ※ alt オプションは、エラーメッセージや確認画面・送信メール内で使われる項目名の「別名」として使われます。
 
2. <input name="暗証番号" size=6> などの入力欄で、半角数字のみで4ケタの入力を求めたいとき
 
または| [ '暗証番号', { z2h=>1, d_only=>1, len_min=>4, len_max=>4 } ], |  
※まず、全角→半角変換をして、全角数字が入力された場合を考慮します。| [ '暗証番号', { z2h=>1, d_only=>1, min=>1000, max=>9999 } ], |  ※その上で、数値のみ必須で、半角数字以外の入力を制限します。
 ※len_min と len_max に 4 を設定することで、4ケタ以外の入力を制限します。数値として 1000 以上 9999 以下、のように制限することも可能です。
 
3. 入力された数値の上限・下限を指定したいとき
 
※上記の例では、「金額」欄に、100円以上9999円以下の数値を要求します。
※このオプションを指定するときは、d_only(数値のみ)も併せて指定しておかないと、誤動作することがあります。| [ '金額', { min=>100, max=>9999 } ], |  
4. 半角カタカナを全角にしたいとき
 
※半角カタカナ(JISX0201)を全角カタカナに変換します。| [ 'フリガナ', { h2z_kana=>1 } ], |  
5. 機種依存文字を拒否したいとき
 
※機種依存文字はとは、Windows/Macなどで独自に制定している丸数字、ローマ数字、カッコ付き数字などの記号・文字と、IBM/NEC拡張文字を指します。| [ 'メッセージ', { deny_rel=>1 } ], |  ※これらの文字は、インターネット環境では、文字化けしたり、対応するEUCコードがなかったりするので、一般には使うべきではありません。
 
6. 電話番号に半角数字とハイフン(-)のみを許可したいとき
 
※まず、全角→半角変換をして、正規表現で 半角数字でもなくハイフンでもない文字にマッチするときにエラーを出すようにします。| [ '電話番号', { z2h=>1, regex=>'[^0-9-]' } ], |  |  |  
▲目次へ ▲変数名索引へ| 
※送信完了時に表示する画面(いわゆるthanksページ)の指定をします。| $THANKS_FLAG = [0|1]; 
| 0 | システムで用意した完了画面を出す |  1 | (7-a)で指定した完了画面を出す |  |  |  
▲目次へ ▲変数名索引へ| ※(7)で $THANKS_FLAG = 1; と設定した場合に指定します。 |  
▲目次へ ▲変数名索引へ| ※通常は「使用する」にしておくことをおすすめします。 ※「連続送信防止機能」は、cookie を使うため、送信者のブラウザの cookie 機能が無効になっている場合は機能しません。
 |  
▲目次へ ▲変数名索引へ| | (8)管理者に送られるフォーム内容メールの送信先/送信元アドレス | 
|---|
 
※SENDTO は、フォームメールの送り先となります。| $SENDTO = "送信先アドレス"; $SENDFROM = "送信元アドレス";
 |  ※SENDFROM は、そのメールのFromヘッダとなります。ただし、フォーム中に name="EMAIL" の入力欄があって、その値がある場合は、EMAILの値が優先され Fromヘッダとなります。
 |  
▲目次へ ▲変数名索引へ| ※SUBJECT は、そのメールのSubjectヘッダとなります。フォーム中に name="SUBJECT" の入力欄があって、その値がある場合でも、この指定が優先されます。フォーム中の値を優先させたい場合は、ここでの指定を空欄としてください(メール送信者にタイトルを指定してもらいたい場合など)。 |  
▲目次へ ▲変数名索引へ| 
※拡張子はスペース区切りで複数指定できます(大文字/小文字の区別なし)。| @ATTACH_EXT = qw( ファイル拡張子1 ファイル拡張子2 … ); @ATTACH_FIELDNAME = qw( フィールド名1 フィールド名2 … );
 $ATTACH_SIZE_MAX = 1ファイルあたりのサイズ上限(キロバイト);
 $ATTACH_TSIZE_MAX = 合計サイズ上限(キロバイト);
 $ENCODING = "[uuencode|base64]";
 |  ※添付ファイルフィールド名は、必ず指定してください。この名称の type=file の入力欄をフォーム内に用意してください。
 ※ここで指定をしても、フォーム中に input type=file の入力欄がなかったり、form enctype=multipart/form-data の指定がない場合には、ファイルのアップロードはできません。
 ※ATTACH_SIZE_MAX および ATTACH_TSIZE_MAX は、0を指定すると "無制限" となります。ただし、とても大きなファイルをアップロードしようとしたとき、Webサーバの制限により、アップロードが完了しないうたに途中で接続が切断されることがあります。これはこのシステムの制限ではなくて、お使いのサーバやネットワークの制限です。
 ※添付ファイルエンコード方法は、v0.53 まではuuencodeのみ対応していましたが、v0.54 より base64 をサポートしました。"uuencode" と指定した場合と、無指定の場合のみ uuencode 方式でエンコードされ、それ以外の文字列が指定されると、base64 方式のエンコードとなります。base64方式はMIMEの標準ですので、ほとんどのメーラー(フリーメール)で対応しています。今までのバージョンで添付ファイルが受け取れなかった場合は、base64方式にしてください。
 ※フォーム内に name=ENCODING である値がある場合、その値がここでの指定より優先されます。radio ボタンや select タグを使うことで、送信者に選択させることができます。
 
 
| [HTML例] 
エンコード方式を選択 :<input type=radio name=ENCODING value="uuencode" checked>uuencode
 <input type=radio name=ENCODING value="base64">base64
 |  |  
▲目次へ ▲変数名索引へ| 
| $MAIL_FORMAT_TYPE = [0|1|2|3]; 
| 1 | タイプ1 --------------------------------------
●メールアドレス:
  aaaaa@bbb.cc.dd
  
●好きな果物:
  りんご
  みかん
  
●感想:
  りんごは紅玉がおいしいです。でも
  食べられる季節が短いのが残念です。
-------------------------------------- |  2 | タイプ2 --------------------------------------
●メールアドレス:aaaaa@bbb.cc.dd
●好きな果物:りんご みかん
●感想:りんごは紅玉がおいしいです。
  でも食べられる季節が短いのが残念です。
-------------------------------------- | 3 | タイプ3 --------------------------------------------------------
●メールアドレス    :aaaaa@bbb.cc.dd
●お名前            :りんご みかん
●感想              :りんごは紅玉がおいしいです。でも
                      食べられる季節が短いのが残念です。
-------------------------------------------------------- | 0 | (8-f)で指定する |  |  |  
▲目次へ ▲変数名索引へ| | (8-d)項目の前に付加する文字列/項目と値の間のセパレータ | 
|---|
 
※(8-c)でタイプ1〜3のフォーマットを使用する場合に、項目の前に付加する文字列(上記例で「●」の部分)および項目と値の間のセパレータ(同「:」の部分)を指定します。| $MARK = "項目の前に付加する文字列"; $SEPR = "項目と値の間のセパレータ";
 |  |  
▲目次へ ▲変数名索引へ| ※(8-c)でタイプ3を指定した場合に、行頭からセパレータまでの文字(バイト)数を指定します。 --------------------------------------------------------
●メールアドレス    :aaaaa@bbb.cc.dd
●お名前            :りんご みかん
●感想              :りんごは紅玉がおいしいです。でも
                      食べられる季節が短いのが残念です。
---------+---------+------------------------------------
        10        20上記の例の場合、文字数は 20 となります。※「項目の前に付加する文字列」と項目名の文字数の合計がここで指定した数値より大きくなった場合は、その分だけセパレータと値の位置が右にずれます。
 |  
▲目次へ ▲変数名索引へ| | (8-f)管理者に送られるフォーム内容メールのレイアウト指定 | 
|---|
 
※(8-c)で $MAIL_FORMAT_TYPE = 0; を指定した場合に、レイアウト文字列を指定します。| chomp($FORMAT = <<'STR'); レイアウト文字列
 STR
 |  ※フィールド値などの値は、##フィールド名## で表すことができます。
 
| ##フィールド名## | フィールド値 |  | ##フィールド名:n## | nは、複数行にまたがる文字列のインデント(半角スペースの数)を指定できます。 |  | ##フィールド名:n:h## | 同じ項目名に複数の答えがある場合、改行せず横方向に並べて表示します。nはインデントです(無視されますので適当な数値を設定してください)。 |  | ##フィールド名:n:v## | 同じ項目名に複数の答えがある場合、1つずつ改行して表示します。nはインデントです。 |  | ##NOW_DATE## | 送信日時 |  | ##REMOTE_HOST## | 接続元ホスト名 |  | ##REMOTE_ADDR## | 接続元IPアドレス |  | ##USER_AGENT## | 使用ブラウザ名 |  
 
| [設定例] 
       chomp($FORMAT = <<'STR');
-=-=-=-=-=-=-=
フォームの送信
-=-=-=-=-=-=-=
問1の答え:##問1の答え:0:h##
感     想:
  ##感想:2##
E-mail:##メールアドレス##
名  前:##お名前##   性別:##性別##
住  所:##ご住所##
TEL:##電話番号##
--------------------------------------------------------
送信日時    :##NOW_DATE##
接続元ホスト:##REMOTE_HOST##
使用ブラウザ:##USER_AGENT##
--------------------------------------------------------
STRと指定した場合、 -=-=-=-=-=-=-=
フォームの送信
-=-=-=-=-=-=-=
問1の答え:りんご バナナ ぶどう もも
感     想:
  とっても感動しました。とっても感動しました。
  とっても感動しました。とっても感動しました。
  とっても感動しました。とっても感動しました。
E-mail:info@psl.ne.jp
名  前:あきら   性別:男性
住  所:東京都都会区都会町1-1-1 アーバンハイツ101
TEL:03-0000-0000
--------------------------------------------------------
送信日時    :2002-09-16 22:34:14
接続元ホスト:j072082.ppp.asahi-net.or.jp
使用ブラウザ:Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; NetCaptor 7.0.1)
-------------------------------------------------------- |  |  
▲目次へ ▲変数名索引へ| ※フォーム送信者に自動返信メールを送るかどうかを指定します。 ※フォーム中に EMAIL 欄を用意しないでこの指定を「送る」にすると、(8)で指定した SENDFROM に宛ててメールが送られてしまいますので注意してください。
 |  
▲目次へ ▲変数名索引へ| 
※フォーム送信者に送る自動返信メールの送信元アドレスを指定してください。| $REPLY_SENDFROM = '自動返信メールの送信元アドレス'; |  ※送信先は、フォームに入力のあった EMAIL 欄のアドレスになります。
 ※送信元アドレス(REPLY_SENDFROM)を指定しないと、(8)で指定した SENDFROM の値が使われます。
 |  
▲目次へ ▲変数名索引へ| 
| $REPLY_SUBJECT = "自動返信メールのタイトル"; |  |  
▲目次へ ▲変数名索引へ| 
| $REPLY_MAIL_FORMAT_TYPE = [0|1|2|3]; 
| 1 | タイプ1 --------------------------------------
●メールアドレス:
  aaaaa@bbb.cc.dd
  
●好きな果物:
  りんご
  みかん
  
●感想:
  りんごは紅玉がおいしいです。でも
  食べられる季節が短いのが残念です。
-------------------------------------- |  2 | タイプ2 --------------------------------------
●メールアドレス:aaaaa@bbb.cc.dd
●好きな果物:りんご みかん
●感想:りんごは紅玉がおいしいです。
  でも食べられる季節が短いのが残念です。
-------------------------------------- | 3 | タイプ3 --------------------------------------------------------
●メールアドレス    :aaaaa@bbb.cc.dd
●お名前            :りんご みかん
●感想              :りんごは紅玉がおいしいです。でも
                      食べられる季節が短いのが残念です。
-------------------------------------------------------- | 0 | (9-f)で指定する |  |  |  
▲目次へ ▲変数名索引へ| | (9-d)項目の前に付加する文字列/項目と値の間のセパレータ | 
|---|
 
※(9-c)でタイプ1〜3のフォーマットを使用する場合に、項目の前に付加する文字列(上記例で「●」の部分)および項目と値の間のセパレータ(同「:」の部分)を指定します。| $REPLY_MARK = "項目の前に付加する文字列"; $REPLY_SEPR = "項目と値の間のセパレータ";
 |  |  
▲目次へ ▲変数名索引へ| 
※(9-c)でタイプ3を指定した場合に、行頭からセパレータまでの文字(バイト)数を指定します。| $REPLY_OFT = 行頭からセパレータまでの文字数; |  --------------------------------------------------------
●メールアドレス    :aaaaa@bbb.cc.dd
●お名前            :りんご みかん
●感想              :りんごは紅玉がおいしいです。でも
                      食べられる季節が短いのが残念です。
---------+---------+------------------------------------
        10        20上記の例の場合、文字数は 20 となります。※「項目の前に付加する文字列」と項目名の文字数の合計がここで指定した数値より大きくなった場合は、その分だけセパレータと値の位置が右にずれます。
 |  
▲目次へ ▲変数名索引へ
▲目次へ ▲変数名索引へ| 
※(9-c)で $REPLY_MAIL_FORMAT_TYPE = 0; を指定した場合に、レイアウト文字列を指定します。| chomp($REPLY_FORMAT = <<'STR'); レイアウト文字列
 STR
 |  ※フィールド値などの値は、##フィールド名## で表すことができます。
 
| ##フィールド名## | フィールド値 |  | ##フィールド名:n## | nは、複数行にまたがる文字列のインデント(半角スペースの数)を指定できます。 |  | ##フィールド名:n:h## | 同じ項目名に複数の答えがある場合、改行せず横方向に並べて表示します。nはインデントです(無視されますので適当な数値を設定してください)。 |  | ##フィールド名:n:v## | 同じ項目名に複数の答えがある場合、1つずつ改行して表示します。nはインデントです。 |  | ##NOW_DATE## | 送信日時 |  | ##REMOTE_HOST## | 接続元ホスト名 |  | ##REMOTE_ADDR## | 接続元IPアドレス |  | ##USER_AGENT## | 使用ブラウザ名 |  
 
| [設定例] 
       chomp($REPLY_FORMAT = <<'STR');
-=-=-=-=-=-=-=
フォームの送信
-=-=-=-=-=-=-=
問1の答え:##問1の答え:0:h##
感     想:
  ##感想:2##
E-mail:##メールアドレス##
名  前:##お名前##   性別:##性別##
住  所:##ご住所##
TEL:##電話番号##
--------------------------------------------------------
送信日時    :##NOW_DATE##
接続元ホスト:##REMOTE_HOST##
使用ブラウザ:##USER_AGENT##
--------------------------------------------------------
STRと指定した場合、 -=-=-=-=-=-=-=
フォームの送信
-=-=-=-=-=-=-=
問1の答え:りんご バナナ ぶどう もも
感     想:
  とっても感動しました。とっても感動しました。
  とっても感動しました。とっても感動しました。
  とっても感動しました。とっても感動しました。
E-mail:info@psl.ne.jp
名  前:あきら   性別:男性
住  所:東京都都会区都会町1-1-1 アーバンハイツ101
TEL:03-0000-0000
--------------------------------------------------------
送信日時    :2002-09-16 22:34:14
接続元ホスト:j072082.ppp.asahi-net.or.jp
使用ブラウザ:Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; NetCaptor 7.0.1)
-------------------------------------------------------- |  |  
▲目次へ ▲変数名索引へ| 
※固定ファイルでよければパスとファイル名を直接指定してください。フォームデータの値をパスやファイル名の一部に使用する場合は、##フィールド名## のように指定してください。| $OUTPUT_FILENAME = "[サーバ上のパス/] 書き出すファイル名"; |  ※上記のとき、値に非アスキー文字(2バイト文字など)が含まれていた場合は、%xx のようなURLエンコードをした値を使用します。
 
※パスは、相対パスの場合は、f_mailer.cgiのあるディレクトリを起点とします。URLではなく、サーバのファイルシステム上のパスを指定してください。| 例: <input name=氏名> の欄に "山本太郎" と入力があり、ファイル名の指定が "##氏名##.txt" であった場合、"%8e%81%96%bc.txt" にデータを格納します(SHIFT-JISコード)。 |  ※書き出すべきファイルはあらかじめ空のファイルを用意して書き込み権限を与えておくか、ファイルを生成するディレクトリに f_mailer.cgi からファイルを生成できる権限を与えておいてください。
 |  
▲目次へ ▲変数名索引へ
▲目次へ ▲変数名索引へ| 
| $OUTPUT_SEPARATOR = [0|1]; 
| 0 | タブ区切りファイル(TSV) |  1 | カンマ区切りファイル(CSV) |  |  |  
▲目次へ ▲変数名索引へ| 
※付加的に実行したいコードを指定します。| $EVAL_COMMAND = <<'STR'; 付加的に実行したいコード
 STR
 |  ※入力された値をチェックした後確認画面の表示前に実行されます。
 ※Perlプログラミングの知識が必要です。
 |  
▲目次へ ▲変数名索引へ| 
※付加的に実行したいコードを指定します。| $EVAL_COMMAND2 = <<'STR'; 付加的に実行したいコード
 STR
 |  ※メール送信する直前に実行されます。
 ※Perlプログラミングの知識が必要です。
 |  
| 
※sendmailをフルパスで指定してください。通常は /usr/sbin/sendmail または /usr/lib/sendmail のいずれかです。| $SENDMAIL  = '[sendmailのパス/] sendmail'; |  
 |  
 
 |