F2Mail.CGI  help

フォームは form タグに属性を付けることでデータ送信の働きをします。
【例】 <form method="POST" action="f2mail.cgi" enctype="application/x-www-form-urlencode">
属性の記述順に規則があるサーバがあります。 省略した属性はデフォルト値が適用されます。
nameフォームの名前(任意)
action送信先を指定します。
(1) データを処理するCGIプログラム
Perl、PHPで作成したCGIアプリケーションが一般的ですが、Ruby、Python、C、Javaなどで作成したものもあります。(サーバで許可されていなければ使えませんが)
(2) mailto:email@address
フォームに入力されたデータはユーザのブラウザに関連付けられたメールソフトに渡され、その後の動作はユーザの環境に依存します。
ブラウザや、method属性によっては、送信ボタンをクリックしたときにメールソフトのメール作成画面に切り替わったり、警告が表示される場合があります。
method送信方法を指定します。
(1) GET (デフォルト)
データはURLエンコードされ action属性値に付加して送信されて、環境変数 $ENV{'QUERY_STRING'} にセットされます。
GETメソッドは、元々はその名のとおりブラウザなどからサーバのファイルをリクエストするためのものですから限られた少しのデータしか送ることができません。
HTTPプロトコルの規約には、URIの長さに制限は設けられていませんがブラウザやWebサーバの実装において制約があるものが存在します。
フォームである程度以上のデータを送るような場合は次の POSTメソッドを使います。
(2) POST
データは enctype属性で指定した形式で標準入力(STDIN)に渡され、データ長が環境変数 $ENV{'CONTENT_LENGTH'} にセットされます。
enctype 送信方法が POST の場合は送信形式を指定します。
(1) application/x-www-form-urlencode (デフォルト)
入力されたデータをURLエンコードし、 keyword=data の形式て、項目が複数の場合は & で連結して送信されます。
(2) multipart/form-data
ファイルをアップロードするときはこの形式を指定します。
入力されたままのデータがキーワードごとに Content-Disposition: form-data; name="keyword" というヘッダを付けて送信されます。 (ヘッダとデータの1セットをパートといいます。)
添付ファイルパートのヘッダには、filename="filename" と、ファイルの種類を示す Content-Type: MIMEtype/FILEtype が付加されます。
ヘッダとデータは2個の改行コードで区切られています。
各パートは環境変数 $ENV{'CONTENT_TYPE'} にセットされた "boundary" という境界文字列で区切られて送信されます。
(3) text/plain
入力されたデータをそのまま keyword=data の形式て、項目が複数の場合は & で連結して送信されます。
ただし、この形式はユーザの環境に依存しますから、日本語文字を送信すると受信側ではまったく意味の無い英数字の羅列になってしまうことがあります。
targetサーバからの応答を表示するウィンドウまたはフレームを指定します。 (デフォルトは self)
iモードID を取得するには、action属性値に 「 ?guid=ON 」 を付加します。
ただし、method属性値が GET の場合は、<input type="hidden" name="guid" value="ON">タグを form要素に加えます。

       フォーム項目設定
フォームの入力項目とデータの処理について設定します。
無記入を許可しない項目は左端のチェックボックスをオンにします。
[項目キーワード] 入力データを識別するキーワード(フォームの入力項目タグの name属性値)です。
プログラム内部ではこのキーワードの頭に $ 記号を付け「変数」 として使います。 この変数で入力値を画面表示やメールに引用することができます。
キーワードには英数字と日本語(全角文字)が使えますが、数字で始まるものは使えません。
【入力照合項目】 2つの項目の入力内容を照合してその一致することをチェックする場合は、同じキーワードを使い、照合する方のキーワードの頭に cchk_ を付けます。
【アクセスキー入力】 ホームごとにアクセスキーを設定し、正しいアクセスキーが入力されていない投稿はエラーにすることができます。 これはボットによるスパム投稿防止に有効であることが実証されています。
【入力確認無し送信】 通常はメール送信前に「入力内容確認ページ」が表示されますが、例えば、ホームページのアドレスを携帯に送信するためのフォームのように、確認ページを省略したい場合があります。こういうときは nonprev というキーワードの項目を設定します。
【フォーム2画面構成】 前後2つのフォームを連番で登録します。
最初のフォームにキーワード nextf で後のフォームのファイルパスを設定します。
メール送信の設定は後のフォームでします。
【システム環境変数】 次のシステム変数(キーワード)が使用できます。
@t  時間($t[5]西暦年、$t[4]月、$t[3]日、$t[2]時、$t[1]分、$t[0]秒、$t{5H}平成年、$t{2AP}午前/午後 時、$t{2ap}時 am/pm)
$reIP  ローカルIPアドレス
$reHOST  ローカルホスト名
$uagent  ブラウザ情報
$mid  アクセス元個体ID(携帯の場合)
[保存項目名]ログに保存する項目名です。これを設定しない項目はログに記録されません。
[指示子]プログラムがフォームデータを処理する上での補足情報や指示事項を設定します。
たとえば、テキスト入力項目に 入力許容字種字数を設定すると入力された文字の半角全角と字数をチェックし、設定に反している場合はエラーを出します。
淡色表示は hiddenタイプの項目で確認ページには表示されません。表示する場合はいったん必須を解除し再設定します。
フォームの大幅な変更の場合は、上のファイル送信フォームからHTMLを送信して設定し直す方が手間がかかりません。 [保存] をクリックするとファイルが上書き保存されます。

      指示子の詳細
入力許容字種字数半角(英数字)、全角(カナ、漢字)、字数の入力制限を設定することができます。 ただし、
全角指定であっても英数字は半角入力が許されます。
【例】 h20(半角20字以内)  z200(全角200字以内)  h7-8(半角7字以上8字以内)
ファイルアップロードアップロードを許可するファイルの種類(拡張子)とサイズ制限値、画象拡縮サイズ、保存パスを設定します。
保存パスを設定しないとファイルは保存されません。 (メール添付はできます)
【例】 .gif.jpg.png.txt.csv  100KB  ./att       (区切りはコンマまたは半角スペース)
ファイルの種類ごとにサイズ制限をする場合は、.gif(100KB).jpg(100KB).png(100KB).txt(50KB).csv(50KB) というように設定します。
画象ファイルのサイズを拡縮するときは次のように ヨコ x タテ を指定します。どちらかを * にすると他方との拡縮率になります。
100x80 → ヨコ100ピクセル、タテ80ピクセルに拡縮
100x* → ヨコ100ピクセル、タテはヨコの拡縮率で拡縮
*x100 → タテ100ピクセル、ヨコはタテの拡縮率で拡縮
>100x80 → 原画のヨコが100ピクセルより大きい場合、ヨコ100px、タテ80pxに縮小
<100x80 → 原画のヨコが100ピクセルより小さい場合、ヨコ100px、タテ80pxに拡大
>100x* → 原画のヨコが100pxより大きい場合、ヨコ100px、タテはヨコの縮小率で縮小
<100x* → 原画のヨコが100pxより小さい場合、ヨコ100px、タテはヨコの拡大率で拡大
>*x100 → 原画のタテが100pxより大きい場合、タテ100px、ヨコはタテの縮小率で縮小
<*x100 → 原画のタテが100pxより小さい場合、タテ100px、ヨコはタテの拡大率で拡大
入力内容確認ページ ファイル名をフォームファイル名に _k を付けたものにするか、キーワードを checkp としてそのファイルパスを設定します。
設定しないときは入力フォームを兼用します。 ただし、フォーム2画面構成の場合は入力内容確認ページのファイルが必須です。
入力内容確認ページにはフォーム(2画面構成の場合は後のフォーム)と同じ fnumタグが必要です。
送信完了ページフォーム送信完了後に表示またはジャンプするページを設定します。
ジャンプ先ページは、キーワード jump でそのURLを設定します。
表示するページはHTMLで作成し、キーワード thankp でそのファイルパスを設定します。 この場合は、if 文を用いてアクセス元に応じた表示をすることができます。
【例】
if (pc) → パソコンだけに表示
if (docomo) → ドコモだけに表示
if (au) → auだけに表示
if (softbank) → ソフトバンクだけに表示
if (willcom) → ウイルコムだけに表示
カッコ内の頭に ! を付けると否定になり、たとえば
if (!pc) は パソコン以外に表示 → 携帯だけに表示する になります。
if ($変数 = = xxx) → 変数の値(数値、文字)が xxx の場合に表示
if ($変数 != xxx) → 変数の値(数値、文字)が xxx ではない場合に表示
if ($変数 = /xxx/) → 変数の値(数値、文字)に xxx を含む場合に表示
if ($変数 !/xxx/) → 変数の値(数値、文字)に xxx を含まない場合に表示
if ($変数 > xxx) → 変数の値(数値)が xxx より大の場合に表示
if ($変数 < xxx) → 変数の値(数値)が xxx より小の場合に表示
なお、if 文の効果はその行だけです。また、見やすくするためにスペースを入れて例記してありますがスペース無しで記述します。
不可視項目指定hidden=設定値  と入力すると入力確認ページには表示されません。
項目キーワード fnum はここに登録する必要はありません。
なお、上記赤字の機能項目はフォームHTMLに <input>タグを挿入する必要はありません。

      郵便番号から住所の自動入力
フォームHTMLのhead領域に、 <script type="text/javascript" src="f2mail.cgi?-bjs"></script> タグを挿入し、
formの 郵便番号inputタグに、 autocomplete="off" onchange='getadr(this.value,"0","ken","addr")'   を付加します。
getadr の this.value の後のパラメータは次のとおりです。
(1) フォーム番号 (HTMLにフォームが1つだけなら 0、複数ならば 1番目=0、 2番目=1、の順)
(2) 都道府県項目キーワード (都道府県と住所を分けて入力するのでなければカラにします)
(3) 住所項目キーワード
この機能は、javascript OFF に設定したブラウザ および携帯では無効です。
携帯用フォームでは次のようにすることができます。郵便番号を入力して送信すると、フォームに該当住所を入力して返されます。

〒:
〒:<input type="text" name="zip" size="8">
<input type="submit" name="c:addr_0_zip_ken_addr" value="住所検索">

      アクセスキー
アクセスキーの入力項目を設定する場合は、 項目キーワードを cword とし、指示子に設定するアクセスキー文字列(漢字、ひらがな、カタカナ)を入力します。
フォームHTMLの body領域の最初に次のタグを挿入します。

<div id="AKspbox" style="position:absolute; z-index:75; visibility:hidden; top:-1000px; left:-1000px; filter:progid:DXImageTransform.Microsoft.Matrix(sizingMethod='auto expand');"><table width="440" style="border:solid 1px #eecccc; filter:progid:DXImageTransform.Microsoft.Shadow(color=#eecccc, strength=15, direction=135);"><tr><td><iframe src="f2mail.cgi?c:akc&fnum=1&bg=fff2bf&tx=cc0000" style="width:440px;height:60px;" allowtransparency="true" border="0" scrolling="no" frameborder="0"></iframe></td></tr><tr><td bgcolor="#eecccc" style="cursor:pointer; cursor:hand;" valign="center" align="center" title="Close" onClick="AKclose()"><span style="font-family:verdana;font-size:16px;font-weight:bold;color:#00ffff">CLOSE</span></td></tr></table></div>
※以上改行無しで、fnumはフォーム登録番号、 カラーコードはフォームの配色に合せて適宜変更します。

<script type="text/javascript" src="f2mail.cgi?-akcjs"></script>

       メール送信設定
このフォームから投稿があったときにメール自動返信またはメール転送を実行する場合に設定します。
[sendmail/SMTP]  sendmailコマンドのシステムパス、またはSMTPサーバアクセス情報
[Envelope-From] SMTPの送信者アドレス (sendmailの場合任意)
メールヘッダの Return-Path にはこのアドレスがセットされます。
ここには転送または自動返信するように設定したアドレスを指定してはいけません。
[From] メールヘッダの From にセットするメールアドレス
[To] 送信先メールアドレス、複数の場合はコンマ区切りで入力します。
複数のアドレスを設定した場合ても、送られるメールに表示されるのはその送信先アドレス1つだけです。
フォーム投稿者に返信する場合はその項目のキーワードの頭に $ を付けて記述します。
ただし、投稿者が自分のアドレスを記入するとは限りません。
他人のアドレスを記入した場合はそちらにメールが届きます。このフォームを使う場面を考慮して決めてください。

フォームの項目設定で select、radio、checkbox により送信先を選択するようにした場合は、
項目key[選択値]=送信先アドレス をコンマ区切りで列記します。
[Copy-To] コピーを送るメールアドレス、複数の場合はコンマ区切りで入力します。 (任意)
題名の頭に [COPY] が付記されます。
Cc、Bcc とは違います。 送られるメールには To と同様にその送信先アドレス1つだけが表示されます。
[Reply-To] メールヘッダに返信先としてセットするアドレス (任意)
ただし、このアドレスが使われるのは「To」に設定した投稿者へのメールとコピーメールで、それ以外には投稿者のアドレスがセットされます。
[題名] メールの題名、 フォームデータを引用する場合は項目のキーワードの頭に $ を付けて記述します。
[本文] メールの本文、 フォームデータを引用する場合は項目のキーワードの頭に $ を付けて記述します。
if 文を用いることができますし、システム環境を転載することもできます。(フォーム設定ヘルプ 「送信完了ページ」項参照)
<end> と書くとそれ以降はメモと見なしメールには転載されません。
なお、送信するメール本文は全角35字で改行されます。ただし、URL、メールアドレスがある行は改行されません。
[添付ファイル] ファイルを添付するときに設定します。 複数の場合はコンマ区切りとします。
フォームでファイルをアップロードしてもここに設定しないとメールにファイルは添付されません。
(1)このフォームの添付ファイルはその項目のキーワードの頭に $ を付けて指定します。
(2)自サイトの他のファイルはシステムパスで指定します。
(3)他サイトのファイルはURLで指定します。
「To」 「Copy-To」 でアドレスの頭に FX- を付けておくとそのアドレスにはファイルを添付しません。

      日本語キーワードを使う場合の注意
フォームの項目キーワードに日本語文字を使うときは、入力内容をメール送信や画面表示に引用する場合、変数を次のように記述してください。
    ${'項目キーワード'}    (シングルクォート ' で括り、さらにそれを大カッコ { } で括って、頭にドルマーク $ を付けます)

      メールアドレスの書式
メールアドレスは次のいずれかの書式で入力します。(混在してもかまいません)
(1) 名前 <メールアドレス>
(2) メールアドレス (名前)
(3) メールアドレス のみ
なお、英数字 @ . _ + - 以外を含むもの、先頭が英数字以外のものはメールアドレスとして認識しません。

Toアドレスが多数のときは別に登録することができます。
アドレスリストを別に登録する場合は、上のメール送信設定の 「To」の 入力フィールドをダブルクリックすると登録ページが開きます。
登録したリストを使う場合は送信設定の 「To」に List と記述します。
また、 CSVファイルで作成したリストを使うこともできます。 この場合は、そのファイルパスと アドレスの列をコンマ区切りで 「To」に記述します。

      SMTPを使う場合の設定
SMTPサーバに直接アクセスしてメール送信を行なう場合は次のように入力します。
(1) 認証を要しない場合
     SMTPサーバ名SMTPポート番号
(2) SMTP認証の場合
     SMTPサーバ名SMTPポート番号ユーザ名(アカウント)パスワード
     ※ CRAM-MD5、DIGEST-MD5、LOGIN、PLAIN の順に認証を試みます。
(3) POP before SMTPの場合
     SMTPサーバ名SMTPポート番号,POPポート番号POPサーバ名,ユーザ名パスワード
     ※ SMTPサーバ名と同じ場合は 「 POPサーバ名, 」 は不要です。
     ※ APOP、POP の順に認証を試みます。
SSLを使う場合は先頭に 「 ssl: 」 を付けます。
なお、認証用アカウントのアドレスを Envelope-From に設定します。

v7.12 2011.8.8