Smaintitle2.gif (4650 バイト)         

webseries.gif (3075 バイト)

[bar.html]

Web Mail

ブラウザ上からフォーム入力した内容を電子メールで送るプログラムです。
システムが、メインスクリプトを中心に各モジュールから構成されているので、HTMLデザインの変更や、処理機能の変更/拡張が簡単に行えます。

 

処理機能の拡張
  • ディフォルトでは設定ファイルのアドレスにメールが届くようになっていますが、フォームから入力したアドレスへメールが届くようにできます。
  • パスワード発行モジュールを利用してメールが送れます。
  • 送信したメールのログが取れます。
  • ユーザー登録スクリプトを使用して、登録された複数のメールアドレスに同時にメールをおくることができます。(簡易メーリングリスト機能)
  • 他のWebシリーズでWeb Mailを利用するようにできます。


操作環境の注意事項

このプログラムは
HTTPサーバーApache1.24
スクリプトPerl5.003
で動作確認しています。(perl4.xxでは自動インストール、プログラム動作しません。)

 

インストール用圧縮ファイル

インストールの仕方

圧縮ファイル名

用途

webmail.lzh 手動インストール用圧縮ファイル
ezinst.pl
webmail.tgz
自動インストール用インストーラー
自動インストール用圧縮ファイル

 

ファイル構成

 

基本
ファイル

ファイル

内容

パーミッション

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
このファィルでは以下の基本機能がカスタマイズできます。

  1. HTMLの背景/フォント色/ブラウザタイトルの変更
  2. フォームから入力されたアドレスにメールを送る
  3. 差出人のメールアドレスの設定
  4. 差出人の名前の設定
  5. 送付先メールアドレスの設定
  6. SMTPサーバーの指定
  7. デフォルトのサブジェクトの設定
  8. 案内メッセージ文の設定
  9. 本文最大サイズの設定
  10. デバッグ機能
変更したい内容 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 <ユーザー定義>

 

Hit Counter
最終更新日:03/06/19

[footer.html]