「POSTMAN3」について

概要

「POSTMAN3」は、HTML フォームの内容を指定されたメールアドレスに送信する CGI スクリプトです。

同梱ファイルについて

clipboard
添付ファイルの一時保存フォルダです。
data
下記ファイルおよびフォルダが格納されています。
_htaccess ファイル
アクセスを禁止するための設定が書かれています。postman.cgi を使用する前に「.htaccess」にリネームします。
msg
自動返信メールのメッセージを記述したテキストファイルを保存します。
number
最新の登録番号(シリアルナンバー)を記述したテキストファイルを保存します。
lib
postman.cgi が利用するモジュールが格納されています。postman.cgi を使用する前に、このフォルダにある「_htaccess」ファイルを「.htaccess」にリネームします。
postman.cgi
HTML ファイルから送られてきたフォームの内容を指定されたメールアドレスに送信する CGI スクリプトです。
postman.css
postman.cgi が付加する class 名に対応したスタイルが書かれています。必要がなければ HTML ファイルから呼び出す必要はありません。
postman.js
その場で書式をチェックしたり、二重送信を防止する JavaScript が書かれています。必要がなければ HTML ファイルから呼び出す必要はありません。
ReadMe.html
このファイルです。サーバにアップロードしないでください。
sample
HTML ファイルのサンプルです。サーバにアップロードしないでください。
contact.html
問い合わせフォームのサンプルです。
page1.html
ページ分割した問い合わせフォームの1ページめのサンプルです。
page2.html
ページ分割した問い合わせフォームの2ページめのサンプルです。
style.css
サンプル HTML が参照するスタイルシートです。
thanks1.html
送信お礼ページのサンプルです。
thanks2.html
送信お礼ページのサンプルです。

設置方法

  1. 下記ファイルおよびフォルダを postman.cgi との相対位置が変わらないようにアップロードします。
  2. 下記「_htaccess」ファイルを「.htaccess」にリネームします。
  3. サーバの環境に合わせパーミッションを適切に設定します。postman.cgi は 0705 など、CGI として動作可能なパーミッションに設定してください。

postman.cgi 設定

my $sendmail = '/usr/sbin/sendmail';
sendmailのパス または SMTPサーバのIPアドレス を設定します。
my $cgi_master = 'master@yourserver.jp';
管理者メールアドレスを設定します。
my $send_ok = 0;
宛先指定ヘッダを許可するかどうか設定します。許可する場合は 1 とします。宛先指定ヘッダを許可すると、HTML で宛先を指定できます。宛先指定ヘッダを許可すると、迷惑メール送信のために悪用される恐れがありますのでご注意下さい。
my $mail_to = 'master@yourserver.jp';
メール送信先を設定します。このアドレスには必ず送信されます。複数の場合はカンマで区切ります。
my $mail_cc = 'admin@yourserver.jp,admin2@yourserver.jp';
Cc メール送信先を設定します。このアドレスには必ず送信されます。複数の場合はカンマで区切ります。
my $mail_bcc = 'user1@yourserver.jp,user2@yourserver.jp';
Bcc メール送信先を設定します。このアドレスには必ず送信されます。複数の場合はカンマで区切ります。
my $ref_check = 1;
直前URLを制限する場合、1とします。直前URLを制限しない場合は、0 とします。
my $ref_uri = 'http://yoursite.jp/';
直前URLが設定された URL にマッチしない場合 $jump_to にジャンプします
my $jump_to = 'http://yoursite.jp/entrance.html';
直前URLが不正であったときの移動先を設定します。
my @allowed_file_types = ('jpg','jpeg','gif','png','txt','csv','zip');
受け付けるファイルの拡張子を設定します。
my $sizelimit = 128000;
添付ファイルのファイルサイズ上限値(単位=バイト/1KB=1000)を背て治します。
my $sv = 'csv_';
送信されたデータを添付ファイルに変換する場合設定します。
csv
送信をCSV形式の添付ファイルに変換する。
tsv
送信をタブ区切りテキストの添付ファイルに変換する。
csv_ または tsv_
メッセージにもデータを含める。
sjis | jis | euc | utf8
添付ファイルの文字コードを指定する。例)csv-utf8_ (「-」はなくてもOK)
my $number_dir = './data/number';
登録番号(シリアルナンバー)保存ディレクトリを相対パスで設定します。
my $msg_dir = './data/msg';
返信メール文書保存ディレクトリを相対パスで設定します。
my $msg_dir = './data/msg';
値によるメールの振り分けを設定します。
書式)変数名=値=>To/Cc/Bcc[改行]
記述例)_Subject_問い合わせの種類_=問い合わせ=>toiawase@domain.x/cc1@domain.x,cc2@domain.x/bcc1@domain.x,bcc2@domain.x
$env::file_mode = 0604;
ファイル用パーミッションを設定します。
$env::dir_mode = 0705;
ディレクトリ用パーミッションを設定します。
$env::clipboard = './data/clipboard';
一時保存ファイルディレクトリの位置を相対パスで設定します。
$env::public_clipboard = './clipboard';
ブラウザからアクセス可能な一時保存ファイルディレクトリの位置を相対パスで設定します。
$env::post_max_size = 100000000;
ファイルアップロード最大容量を設定します。

要素名(name="")による入力チェック設定

メールヘッダを指定する記述
入力欄の名前が"_"で始まる値はメールヘッダになります。メール送信時には「差出人アドレス:○○」等の形にされます。
_To
宛先アドレス
_From
差出人アドレス
_Subject
表題/表題中の"_NAME_"は「差出人の名前」に、"_ID_"は「登録番号」に変換されます。
名前を変えたいときは"_○○"とします。例)_From_送信者
差出人名フィールドを指定する
入力欄の名前が"_NAME_"で始まる値は差出人の名前となります。例)_NAME_お名前
入力の強制
入力欄の名前が"_"で終わる値は入力が強制されます。例)コメント_
入力の同一性確認
入力欄の名前が"!"で終わる値は、同じ名前の項目が全て同じ文字列かどうかチェックします。例)パスワード_P!
形式のチェック
入力欄の名前が次の文字列で終わる値は、形式をチェックします。
_E
E-Mail のチェック(複数のアドレス)
_e
E-Mail のチェック
_A
半角英数字(半角英数字 _ 半角空白 , . -)のチェック
_a
半角英数字のチェック
_N
半角数字のチェック
_n
半角数字のチェック(計算結果に変換)
_U
URLのチェック
_p
半角英数字文字列かどうかチェック
_P
半角英数字で始まる半角英数字文字列かどうかチェック
_P-4-8
4文字以上8文字以下の半角英数字で始まる半角英数字文字列かどうかチェック
_K
カタカナのチェック
_H
ひらがなのチェック
例)
ホームページ_U
URL チェック
メールアドレス_E_
入力の強制 + E-Mail チェック
順序の明示
データの順番を指定するときは冒頭に数字と_を加えます。この指定がない場合、通常はデータが送られてきた順になります。順番指定のあるデータと指定のないデータが混在している場合、指定のないデータの順序が乱れることがあります。
01_お名前_
一つ目のデータ + 必須項目
02__From_メールアドレス_e_
二つ目のデータ + 差出人アドレス(From) + メールアドレスチェック + 必須項目

hidden フィールドによる環境設定

_THANKS
送信お礼ページを指定します。
<input type="hidden" name="_THANKS" value="(相対パス)">
フォームのある HTML から見た相対パスで指定された HTML ファイルを表示します。
<input type="hidden" name="_THANKS" value="変数名1==値1==相対パス1||変数名2==値2==相対パス2">
場合分けする例。「変数名1」が「値1」のとき「相対パス1」を表示し、「変数名2」が「値2」のとき「相対パス2」を表示します。「||」は条件区切りです。条件は順番に評価されます。
移動先パスの先頭に「!!」をつけると、指定されたファイルに直接移動します。移動先パスおよびお礼ページ中の次のタグは自動変換されます。
<ID> | ##ID##
登録番号
<PASSWORD> | ##PASSWORD##
パスワード(最後のパスワード項目)
<DATA> | ##DATA##
送信データのリスト(移動先パスでは変換されません)
<EMAIL> | ##EMAIL##
送信先アドレス
<MASTER_EMAIL> | ##MASTER_EMAIL##
CGI 管理者アドレス
<NAME> | ##NAME##
差出人の名前
<!--FIELD:変数名--> ... <!--/FIELD--> | ##FIELD:変数名##
対応するフィールドの値に置き換えます。
<!--FIELDNUM:変数名--> ... <!--/FIELD--> | ##FIELDNUM:変数名##
対応するフィールドの値の数字部分に置き換えます。
タグの最初に "ENCODED_" をつけると URL エンコードされた値に変換されます。移動先パスでは常に URL エンコードされた値となります。
_DATA
送信データの形式を指定します。
csv
送信をCSV形式の添付ファイルに変換する。
tsv
送信をタブ区切りテキストの添付ファイルに変換する。
csv_ または tsv_
メッセージにもデータを含める。
例)
<input type="hidden" name="_DATA" value="csv">
CSV形式の添付ファイルに変換する
_ID
自動発行する登録番号を設定します。
_ID_会員番号
「会員番号」という名前で発行したいとき。
_ID-A_会員番号
識別記号を付けたい場合。→例)01234A
例)
<input type="hidden" name="_ID" value="番号保存ファイル名">
番号保存ファイル名は他のフォームと重複しないユニークな半角英字名にしてください。
_MSG
自動返信メールのメッセージ(ファイル名)を指定します。メールヘッダ"From"に対応する入力欄が必要です。返信文中の次のタグは自動変換されます。
<ID> | ##ID##
登録番号
<PASSWORD> | ##PASSWORD##
パスワード(最後のパスワード項目)
<DATA> | ##DATA##
送信データのリスト
<EMAIL> | ##EMAIL##
送信先アドレス
<MASTER_EMAIL> | ##MASTER_EMAIL##
CGI 管理者アドレス
<NAME> | ##NAME##
差出人の名前
タグの最初に "ENCODED_" をつけると URL エンコードされた値に変換されます。
<input type="hidden" name="_MSG_登録ありがとうございます" value="返信文ファイル名">
あらかじめ返信文ファイルを作成し、初期設定で指定したパス($msg_dir)に設置してください。返信文ファイル名は他のフォームと重複しないユニークな半角英字名にしてください。
<input type="hidden" name="_MSG" value="変数名1==値1==返信文ファイル名1||変数名2==値2==返信文ファイル名2">
場合分けする例。「変数名1」が「値1」のとき「返信文ファイル名1」から返信メールを作成し、「変数名2」が「値2」のとき「返信文ファイル名2」から返信メールを作成します。「||」は条件区切りです。条件は順番に評価されます。
ファイルごとに表題を設定するには一行めに、「Subject:メールの表題[改行]」を入れます。
_HERE
フォームのあるページを明示的に指定します。このオプションはリンク元を送信しない環境で動作させるためには必須です。
<input type="hidden" name="_HERE" value="絶対パス">
絶対パスで指定します。
_CONFIRMATION
送信内容確認ページを経由するよう設定します。このオプションは最後のページに記述します。
<input type="hidden" name="_CONFIRMATION" value="true">
_CONFIRMATIONPAGE が指定されていない場合、フォームのあるページから送信内容確認ページを作成します。
_CONFIRMATIONPAGE
送信内容確認ページを指定します。このオプションは最後のページに記述します。
<input type="hidden" name="_CONFIRMATIONPAGE" value="./confirmation.html">
フォームのあるページから見た相対パスで「./confirmation.html」に対応するファイルを送信内容確認ページのテンプレートとします。
フォームページおよび送信内容確認ページのための独自タグ
<!--FORM_ONLY--> ... <!--/FORM_ONLY-->
フォームでのみ表示する領域を指定します。
<!--CONFIRMATION: ... -->
確認画面でのみ「 ... 」部分を表示します。
<!--FIELD:変数名--> ... <!--/FIELD--> | ##FIELD:変数名##
対応するフィールドの値に置き換えます。
<!--FIELDNUM:変数名--> ... <!--/FIELD--> | ##FIELDNUM:変数名##
対応するフィールドの値の数字部分に置き換えます。
_NEXT, _NEXTPAGE, _PREV, _PREVPAGE
フォームをページ分割する場合使用します。
<input type="hidden" name="_PREVPAGE" value="./form.html">
前のページを相対パスで指定します。
<input type="submit" name="_PREV" value="前のページ">
前のページへ移動するボタンです。
<input type="hidden" name="_NEXTPAGE" value="./form2.html">
次のページを相対パスで指定します。
<input type="submit" name="_NEXT" value="次のページ">
次のページへ移動するボタンです。
_NOCHECK
ページが分割されているとき書式チェックをスキップするオプションです。
<input type="hidden" name="_NOCHECK" value="true">
書式チェックをスキップします。
_DATE
登録日時を送信します。下記日時書式を指定できます。
-
2005-11-25 13:23:55
v
2005/15/25T13:23:55Z
/
2005/11/25/(金) 1:23:55 p.m.
/24
2005/11/25/(金) 13:23:55
c
2005年11月25日(金) 午後1時23分55秒
c24
2005年11月25日(金) 13時23分55秒
cj
平成17年11月25日(金) 午後1時23分55秒
c24j
平成17年11月25日(金) 13時23分55秒
cjk
平成一七年一一月二五日(金) 午後一時二三分五五秒
c24jk
平成一七年一一月二五日(金) 一三時二三分五五秒
cJk
平成一七年霜月二五日(金) 午後一時二三分五五秒
c24Jk
平成一七年霜月二五日(金) 一三時二三分五五秒
例)<input type="hidden" name="_DATE" value="/24">

注意

FORM METHOD
必ず POST にします。
チェックボックス対策
チェックボックスはチェックされていないと値が送られませんが、hidden を使って値の存在を明示することができます。値が"*"の場合無視されます。
<input type="hidden" name="チェックボックスと同じ名前" value="*">
チェックボックやラジオボックスの存在を明示します。
文字化け対策
<input type="hidden" name="_" value="_">
<form> の直後に入れておくと文字化けしにくくなります。値は全角の下線。
name 属性に値を埋め込む
name 属性に URL エンコードされた値の組を指定できます。
<input type="submit" name="_THANKS=/download1.html" value="ダウンロードページ1" />
<input type="submit" name="_THANKS=/download2.html" value="ダウンロードページ2" />
押されたボタンによって送信お礼ページを切り替える例
<input type="submit" name="name=value&name2=value2" value="1" />
一つのチェックボックスに複数の値を持たせる例(value は無視されます)。

作成者

著作権
株式会社CMONOS
ライセンス
MIT ライセンス
お問い合わせ
株式会社CMONOS お問い合わせフォーム
ご意見・ご要望
株式会社CMONOS フィードバックフォーム
フォーラム(BBS)
株式会社CMONOS フォーラム
責任の制限
過失を含むいかなる場合であっても、株式会社CMONOS は本スクリプトを使用したことに起因する若しくは関連する付随的、間接損害について、一切の責任を負いません。

バージョン履歴

2015年2月5日
2014年3月11日
2013年7月1日
2013年1月10日
2012年12月2日
2012年9月3日
2012年6月20日