これは Web 上において問い合わせや注文などをフォームで受け付け、 その内容を指定されたメールアドレスにメールで送信するための CGI プログラムです。
入力フォームで入力したものを確認するための画面を表示することができます。 また、確認画面を表示せずに即送信させるような設定も可能です。
入力画面、確認画面、エラー画面、送信されるメールはテンプレート方式と なっており、デザインを自由に変更することができます。
フォームの入力必須項目を設定することができます。
sendmail が使えない環境のために、Net::SMTP によるメール送信もサポート しています。
GPL によりライセンスされており、配布・改造・販売・商業利用などを 自由に行うことができます。
まず CGI の必須設定を行います。 formmailg.cgi の先頭付近に設定を記述します。
フォームから送られたメールを受信するメールアドレスを指定します。
my $Mailto = 'gm@pc-egg.com';
フォームから送られてくるメールの From ヘッダに書かれるメールアドレスを 指定します。
my $MailFrom = 'form@pc-egg.com';
メールの送信に使用する sendmail プログラムをフルパスで指定します。 もしメールの送信に Net::SMTP を使うのなら空 = '' を指定します。
my $Sendmail = '/usr/sbin/sendmail';
あるいは
my $Sendmail = '';
Net::SMTP でメールを送信するときに使う SMTP サーバを指定します。
my $SMTPServer = 'smtp.pc-egg.com';
フォームから送られてくるメールの Subject ヘッダに書かれる文章を 指定します。現バージョンではここにフォームから入力された内容を 埋め込むことはできません。
my $Subject = 'お問い合わせ';
フォームで入力を必須とするフィールドの name 属性を指定します。 ここで指定されたフィールドを入力せずに送信しようとするとエラー画面に 遷移します。
my @RequiredParameters = ('氏名', 'メールアドレス');
フォームのメール送信が完了した後で、ここで指定した URI に画面を 遷移します。
my $doneURI = 'http://www.pc-egg.com/';
ここからはオプション設定です。デフォルトのままでも問題ありません。
確認画面を表示せずに即メールを送信する場合には 0 を、確認画面を 表示する場合には 1 を指定します。
my $ShowConfirmForm = 1;
確認画面のテンプレート HTML ファイルを指定します。
my $ConfirmTemplate = 'confirm.html';
エラー画面のテンプレート HTML ファイルを指定します。
my $ErrorTemplate = 'error.html';
送信されるメールのテンプレートファイルを指定します。
my $MailTemplate = 'mail.txt';
入力フォームは自由に作成することができます。 必要なのは下記のようにフォームの送信先に本 CGI を指定することだけです。
<form method="POST" action="formmailg.cgi">
ここで指定した name 属性が確認画面やメールでの変数になります。
確認画面テンプレートはデフォルトでは confirm.html という名前に なっています。このファイルを編集することで自由に画面をカスタマイズ することができます。
入力フォームで入力した内容を表示するには、入力フォームでの name 属性を 「$address$」のように $ で囲って記述します。
確認画面でのフォーム送信先には、入力フォームと同じように 本 CGI を 指定します。
<form method="POST" action="formmailg.cgi">
入力フォームの内容を裏で CGI に渡さなくてはならないので、上記の form タグの 次の行にでも「$hidden$」と必ず記述してください。
confirm.html は文字コードを必ず EUC-JP にしてください。ShiftJIS は 受け付けません。
エラー画面テンプレートはデフォルトでは error.html という名前に なっています。このファイルを編集することで自由に画面をカスタマイズ することができます。
基本的には確認画面テンプレートの時と同じです。 ただし有効な変数は「$error$」だけです。 これがエラーメッセージに置き換わります。
error.html は文字コードを必ず EUC-JP にしてください。ShiftJIS は 受け付けません。
メールフォームから送られるメールの書式を mail.txt で記述します。 ここでも確認画面テンプレートと同じように、入力フォームで記述した 「$name 属性$」を指定すると、それが入力内容に 置き換えられます。
それ以外にも以下の予約変数を使用することができます。
フォーム送信者の HTTP_USER_AGENT に置き換えられます。
フォーム送信者の IP アドレスに置き換えられます。
フォーム送信者のホスト名 (ただし逆引きが可能なとき) に置き換えられます。
フォームを送信した日時に置き換えられます。
mail.txt は文字コードを必ず EUC-JP にしてください。ShiftJIS は 受け付けません。
いよいよプログラムと関連ファイルをサーバにアップロードします。 最低限必要なのは以下のファイルです。
括弧の中が推奨パーミッションです。この CGI から作成したり修正したり するファイルはないので、formmailg.cgi が world executable で、 それ以外のファイルが world readable になっていれば動くはずです。
ここでは form.html を formailg.cgi と同じディレクトリに置いていますが、 このファイルはテンプレートではありませんので、ここに置くことが必須では ありません。form の action を適切に書き換えればどこのサーバに置いても 構いません。
Copyright (C) 2003-2005 PC-EGG Co.,Ltd. <tech@pc-egg.com>
Copyright (C) 2003-2005 Yuuki NINOMIYA <gm@pc-egg.com>
本プログラムはフリー・ソフトウェアです。あなたは、Free Software Foundation が公表した GNU 一般公有使用許諾のバージョン 2、あるいは それ以降の各バージョンの中からいずれかを選択し、そのバージョンが 定める条項に従って本プログラムを再頒布または変更することができます。
本プログラムは有用とは思いますが、頒布にあたっては、市場性および 特定目的適合性についての暗黙の保証を含めて、いかなる保証も 行ないません。詳細については GNU 一般公有使用許諾書をお読みください。
あなたは、本プログラムと一緒に GNU 一般公有使用許諾の写しを 受け取っているはずです。そうでない場合は、Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA へ 手紙を書いてください。
このソフトでは外部ライブラリとして jcode.pl と mimew.pl を使用しています。 使用者の利便性のために、これらをアーカイブ内にバンドルしてありますが、 これらは GPL ではなく、それぞれ独自のライセンスを持っています。 詳細は各ライブラリのコメント中にあるライセンス要項を参照してください。
特にありません。
感想、提案、バグレポート、パッチ等はいつでも歓迎します。 お気軽にお送りください。
有限会社ピーシーエッグ <tech@pc-egg.com>
二之宮 祐樹 <gm@pc-egg.com>
最新の FormMail-G の公式リリースは以下の URI からダウンロードできます。
http://www.pc-egg.com/download.html