Web Mailブラウザ上からフォーム入力した内容を電子メールで送るプログラムです。
システムが、メインスクリプトを中心に各モジュールから構成されているので、HTMLデザインの変更や、処理機能の変更/拡張が簡単に行えます。
- ディフォルトでは設定ファイルのアドレスにメールが届くようになっていますが、フォームから入力したアドレスへメールが届くようにできます。
- パスワード発行モジュールを利用してメールが送れます。
- ユーザー登録スクリプトを使用して、登録された複数のメールアドレスに同時にメールをおくることができます。(簡易メーリングリスト機能)
- 他のWebシリーズでWeb Mailを利用するようにできます。
このプログラムは
HTTPサーバーApache1.24
スクリプトPerl5.003
で動作確認しています。(perl4.xxでは自動インストール、プログラム動作しません。)
インストールの仕方
基本
ファイル |
ファイル |
内容 |
パーミッション |
○ |
webmail.cgi |
メインプログラム
各モジュールの読み込み
HTML(フォーム含む)および処理結果の表示
メール送信ルーチンの呼び出し |
-rwx---r-x |
705 |
○ |
CgiMail.pm |
メール送信モジュール
他のシステムでも利用できるモジュールです。 |
-rw----r-- |
604 |
○ |
custom.ph |
パス等の基本的なヘッダ情報
HTML基本色等をを設定します。
送受信メールアドレスを記述します。 |
-rw----r-- |
604 |
○ |
design.txt |
ページデザイン(HTML)が書かれた
設定ファイル
このファイルのためメインプログラムに直接
HTMLを書きこむ必要がありません。 |
-rw----rw- |
604 |
|
CGI.pm |
CGIモジュール |
-rw----r-- |
604 |
|
CgiDesign.pm |
CGIページデザインモジュール |
-rw----r-- |
604 |
|
jcode.pl |
日本語をしようできるようにする
サブルーチン |
-rw----r-- |
604 |
|
mimew.pl |
MIMEエンコードルーチン
メールのサブジェクトヘッダを日本語にする。 |
-rw----r-- |
604 |
|
オプションファイル |
内容 |
パーミッション |
|
CgiLock.pm |
ファイルロックモジュール |
-rw----r-- |
604 |
|
CgiUser.pm |
ユーザー認証モジュール |
-rw----r-- |
604 |
○ |
sub.pl |
追加オプションルーチン
ユーザー定義用サブルーチン |
-rw----r-- |
604 |
|
maillog.txt |
ログファイル |
-rw----rw- |
606 |
|
user.txt |
ユーザー登録用データファイル |
-rw----rw- |
606 |
|
auth.txt |
パスワード登録ファイル |
-rw----rw- |
606 |
|
ディレクトリ |
|
パーミッション |
|
webmail |
|
drwxr-xr-x |
755 |
オプションを利用する場合ファイル
ロックが必要になる場合がある。 |
drwxrwxrwx |
777 |
変更ファイル:webmail.cgi
変更箇所:#! /bin/perl
サーバー上のperlのある場所をあわせる。
変更ファイル:custom.ph
変更箇所:$mailfrom = 'yourname@yourdomain.or.jp';
変更箇所:$mailto = 'yourname@yourdomain.or.jp';
メールアドレスをあなたのものにあわせる。
●変更ファイル:custom.ph
このファィルでは以下の基本機能がカスタマイズできます。
- HTMLの背景/フォント色/ブラウザタイトルの変更
- フォームから入力されたアドレスにメールを送る
- 差出人のメールアドレスの設定
- 差出人の名前の設定
- 送付先メールアドレスの設定
- SMTPサーバーの指定
- デフォルトのサブジェクトの設定
- 案内メッセージ文の設定
- 本文最大サイズの設定
- デバッグ機能
変更したい内容 |
custom.ph内の変更箇所 |
HTMLの背景 |
$bgcolor = '#000000'; |
フォント色 |
$font_color = 'black'; |
ブラウザタイトル |
$title = 'ウェッブメール'; |
フォームから入力されたアドレスに
メールを送る |
$form2mail = 'off';
デフォルトでは自分宛てのみにメールが届く
ようになっています。変更したい場合は"on"
にします。 |
差出人のメールアドレスの設定 |
$mailfrom = 'you@yourdomain.or.jp'; |
差出人の名前の設定 |
$mailfrom_name = 'WebMail for you'; |
送付先メールアドレスの設定 |
$mailto = 'you@yourdomain.or.jp'; |
SMTPサーバーの指定 |
通常はローカルホストのSMTPを使用
$server = 'localhost';SMTPがローカルにない場合、サーバー指定
$server = 'mail.yourdomain.com'; |
デフォルトのサブジェクトの設定 |
サブジェクトが定義されていない場合のメールSubject
$form2mailが"on"になっているとき、同様のタイトル/内容
が届くとき、HTMLでサブジェクト入力フォームを作成しない場合$def_subject
= 'アカウント申し込み'; |
案内メッセージ文の設定 |
$form2mailが"on"になっているとき、同様のタイトル/内容
が届くとき。"off"の時は参照されません。$mail_info
='ウェッブメールからの応答メッセージ:'; |
本文最大サイズの設定 |
フォームから送れる本文メッセージのサイズ
デフォルトでは500(250文字)バイトです。$data_size = '500'; |
デバッグ機能 |
パラメーターを0から1に変更するとブラウザ上でSMTPのやりとり
を確認できます。$debug = '1'; |
●変更ファイル:design.txt
このファィルはCgiDesign.pmモジュールから読み込まれ、メインスクリプトに書きこむことなく容易にHTMLのデザインなどを変更できます。各パラメーターは二重カッコでとじ、その間にHTMLタグを書きこみます。
以下の基本機能がカスタマイズできます。
<<SIGNATURE>>
/**********************/
NAME:Taro Fukada
Email:taro@fukada.com
URL:http://www.fukada.com/
/**********************/
<</SIGNATURE>>
- HTMLのデザインを変える。
次のパラメータが使用できます。
<<PAGETOP>>ページの頭のメッセージ<</PAGETOP>>
<<PAGEBOTTOM>>ページの最後のメッセージ<</PAGEBOTTOM>>
<<WRITEFORM>>フォームを作成<</WRITEFORM>>
(<FORM>タグ中のNAME="email"
NAME="title" の部分は変更してはいけません。)
<<RESULT>>メール送信後のメッセージ<</RESULT>>
1.フォームの変更と追加をするには?
●変更ファイル:
design.txt / webmail.cgi
(例)住所と電話番号、職業のフォームを追加
design.txtの変更
<<WRITEFORM>>
<TABLE>
ここにフォームを追加する。
<INPUT NAME="address"...>
<INPUT NAME="tel"...>
<INPUT NAME="job"...>
</TABLE>
<</WRITEFORM>>
webmail.cgiの変更
design.txtのHTMLフォームで追加した、INPUT NAMEにあわせて変数を追加します。
$address = param('address');
$tel = param('tel');
$job = param('job');
配列"@other"の中に変数を追加します。
@other = ($address,$tel,$job);
以上のようにdesign.txtとwebmail.cgiを対応させることでメールで送られる内容を追加していくことができます。
2.フォームから入力されたアドレスへの配信をするには?
●変更ファイル:
custom.ph / webmail.cgi / design.txt / sub.pl
デフォルトでは、custom.phで設定したアドレスにメールが届くようになっていますが、フォームから入力されたアドレスへメールが届くようにします。
(例)名前、送り先メールアドレス、パスワードを送ります。
webmail.cgiの修正
1.を参考にして、design.txtにフォームを追加、webmail.cgiを修正してください。
次にパスワード発行モジュールを組み込みます。
use CgiMaill;
の次の行に以下の行を挿入してください。
use CgiUser;
use CgiLock;
require 'sub.pl';
sub.pl中のサブルーチンを有効にするため次の2行のコメント(#)をはずします。
(暗号化されたパスワードがメールで届くようになります。)
$return_subs = &send_pass;
@other = ($return_subs);
custom.phの修正
次の行を"on"にするとフォーム入力アドレスにメールが届くようになります。
$form2mail = 'on';
メールヘッダのSubjectを変更するには
$def_subject = 'パスワード送付';
メール送信アドレスを変更するには次の行を書き換えます。(これはRe:返信アドレスになります。)
$frommail = 'you@yourdomain.or.jp';
メール本文の1行目インフォメーションを変更するには
$mail_info = 'ウェッブメールからの自動パスワード送付です';
webmailディレクトリの修正
ログファイルをロック
webmail
ディレクトリのパーミッションを777に変更します。
発行したパスワード、メールアドレスをファイルに登録しておくためにファイルauth.txtをディレクトリ内に作成し、パーミッションを606にします。
sub.plの修正
あなたが定義した処理結果をメール送付したい場合などは別ルーチンをsub.pl内に作成します。プレゼントの当選結果をランダムに決定して送信するルーチン等に使います。
$return_subs = &hogehoge;
sub hogehoge
{
.....処理....
処理結果
}
3.同時に複数の人にメールを送りたい場合は?
ディフォルトの設定だと、custom.phに書かれたメールアドレス($mailto)にのみメールが届きます。これを複数の人にメールを送るようにすることによってダイレクトメール/メーリングアドレス的な使い方ができます。
custom.phの修正
$form2mail = 'off';
にします。また、送信先メールアドレスファイルは、デフォルトではuser.txt
$userfile = 'user.txt';
になっておりますが、このファイルは実際に中身が書いてないとプログラム中で有効になりません。webmaiディレクトリ中にファイルを作成し、1行に1アドレスを記入しておきます。
この手動アドレス登録が面倒な場合は、サンプル登録スクリプト:user.cgiがsub.pl内にありますのでご利用ください。
4.メールの履歴を残す。
●変更ファイル:
custom.ph / webmail.cgi / design.txt / sub.pl
いたずら防止管理などの為に送信記録などのログを記録しておくことができます。
custom.phの修正
$log = 'yes';
ログファイルをロック
webmailディレクトリのパーミッションを777にします。
ログ用データファイルの作成
ログ書き込み用ファイル:maillog.txt(パーミッション606)を作成します。
ログ内容フォーマットのデフォルトは
日付、送信者アドレス(送信者名)、リモートホスト名
をタブキーで区切ったものになっています。
CgiMail.pmの修正
上のフォーマットを変更したい場合は、
$log =
GetDate(time).$dlmt.$email."<".$name.">".$dlmt.remote_host()."n\";
の部分を変更します。
5.他のプログラム/
システムからウェッブメールを利用する方法
webmail.cgiの修正
CgiMail.pmをプログラム本体:webmail.cgiの上の方で、
use CgiMail;
のように読み込むようにします。
入力フォームのHTMLを作成して、CgiMail.pm中のルーチンmsockを呼び出し、基本的な情報名前・メールアドレス・タイトルを渡します。
webmail.cgi中の
<INPUT TYPE="hidden"
NAME="point" VALUE="send">
のように、フォーム中に隠しフィールドを置き送信ボタンがクリックされたときにmsockを呼び出しています。
msock($name,$email,$subject,$text,@other) if
param('point') eq 'send';
●
最低限必要な変数
内容 |
変数名 |
情報 |
名前 |
$name |
<INPUT NAME="name"> |
メールアドレス |
$email |
<INPUT NAME="email"> |
サブジェクト |
$subject |
<INPUT NAME="subject"> |
●
追加可能な変数
内容 |
変数名 |
情報 |
本文 |
$test |
<INPUT NAME="text"> |
その他 |
@other |
<ユーザー定義> |
最終更新日:03/06/19
|