トップ > フリーCGI配布 > メール > 基礎メール

スクリプト概要

単純にメールを送信するためのCGI。自作CGIスクリプトの参考資料にも。シンプルながら、メールアドレスの2重入力検査、日本語メールにまじめに対応。

メールフォーム、送信完了画面はHTMLでデザイン変更できます。
見本

基礎メールの「見本(新しいウィンドウで開きます)
機能一覧

基礎的なメール送信
メールアドレス2重入力
日本語に対応
簡易2重投稿防止
スクリプト情報

スクリプト名
「基礎メール」
バージョン
「1.05」
Perl/CGI以外に必要なサーバ環境
「Sendmailまたは、Sendmail互換プログラム必須」


ダウンロードはこちらから
次のファイルのどちらかをダウンロード・解凍します。


kisomail_1_05.zip(Windowsを使用している方はこちら)

kisomail_1_05.tgz (UNIX,MacOSXを使用している方はこちら)


【→ヘルプ表示:ダウンロードと解凍】
解凍すると次ファイル構成になっているので確認してください。

kisomail/   ……………………… (755) アプリケーションディレクトリ
  │
  ├ input.html ………………… (644) 入力フォーム用HTML
  ├ finish.html  ……………… (644) メール送信完了画面のHTML
  ├ sendmail.cgi ……………… (755) メール送信実行ファイル
  │
  ├ data/  ……………………… (777) データ記録ディレクトリ
  │  └ lastmail.cgi ………… (666) 2重送信防止用データ
  │
  ├ lock/  ……………………… (777) ファイルロックディレクトリ
  │  └ flock.cgi  …………… (666) ロックファイル
  │
  └ lib/   ……………………… (755) ライブラリディレクトリ
      ├ ap_mimeenc.pl  ……… (644) 日本語メールヘッダ符号化ライブラリ
      └ jcode.pl ……………… (644) 日本語変換ライブラリ
「/」で終わるものはディレクトリです。
()内の数字は、比較的多くのサーバで通用するパーミッション設定値です。
※パーミッション設定値はサーバごとに若干異なります。


設置前の補足

■cgi-binなど制限付きサーバへ設置する場合
CGI、HTMLファイルを同じディレクトリ内へ設置できないcgi-binなど制限付きサーバに限り、上のファイル構成とは、設置方法が異なります。このタイプのサーバへ設置する場合、まず、「input.html」「finish.html」は、ウェブブラウザで表示できる場所へ設置してください。また、「input.html の formタグのaction="./sendmail.cgi"」と、「sendmail.cgi の $finish_url = './finish.html';」を設置アドレスに合わせて変更してください。設定値は、サーバごと、設置方法ごとに異なります。詳しくは利用中のサーバのサポートページも合わせて参考にしてください。cgi-binなど制限付きサーバでは、特殊な設置方法になることを予めご了承ください。

※通常のサーバでは、上のファイル構成で、簡単に設置できます。
※次の設置方法は、通常のサーバを対象にしています。

■KDDI社の携帯電話で利用する場合
KDDI社の携帯電話機種の一部に、メール送信後のアドレスを認識できない機種があります。KDDI社の携帯電話から利用予定がある場合には、「sendmail.cgi」の 「$finish_url = './finish.html';」と書かれている部分を「$finish_url = 'http://設置アドレス/finish.html';」のように「http://〜」で始まる形式へ変更して設置してください。

※KDDI社の携帯電話から利用予定がない場合、この設定は必要ありません。


設置方法
上のファイル構成図を参考にご覧ください。
ステップ1)Perlのパスを確認



印のファイル
sendmail.cgi」 をテキストエディタで開き、サーバで用意されているPerlのパスを確認します。

初期の状態では、
#!/usr/local/bin/perl
と設定されていますが、Perlのパスが異なる場合には変更してください。

(参考までに、「#!/usr/bin/perl」も良く使われるPerlのパスです。「#!/usr/local/bin/perl」で動作しなかったら変更してみてください。不明な場合にはサーバ管理者へ問い合わせてください。)
ステップ2)初期設定の編集



印のファイル「sendmail.cgi」をテキストエディタで開き、「基本設定」と書いてある次の項目を設定変更します。

・Sendmailのパス
・メールの件名
・宛先メールアドレス
・ファイルロック方法
は、設定必須です。次を参考に設定してください。

$sendmail(Sendmailのパス)
サーバで用意されているメール送信プログラムSendmailのパスを設定してください。
例: /usr/sbin/sendmail から /usr/lib/sendmail へ変更する場合には、
$sendmail = '/usr/sbin/sendmail'; を
$sendmail = '/usr/lib/sendmail'; と書き換えます。
(参考までに、「/usr/sbin/sendmail」や、「/usr/lib/sendmail」がよく使われるSendmailのパスですが、不明な場合にはサーバ管理者へ問い合わせてください。)

$mail_subject(メールの件名)
例: メールフォームより から 問合せフォーム へ変更する場合には、
$mail_subject = 'メールフォームより'; を
$mail_subject = '問合せフォーム'; と書き換えてください。

$mail_to_addr(メール受信先のメールアドレス)
例: tobita@127.0.0.1 から hogehoge@127.0.0.1 へ変更する場合には、
$mail_to_addr = 'tobita@127.0.0.1'; を
$mail_to_addr = 'hogehoge@127.0.0.1'; と書き換えてください。


$lock_method(ファイルロック方法)
通常変更不要ですが、flock関数利用が禁止されているサーバでのみ、次のように書き換えます。
$define->{'LOCK_METHOD'} = 1; を
$define->{'LOCK_METHOD'} = 2; と書き換えます。
(flock関数利用かどうかは、サーバ管理者へ問い合わせてください。)

【→ヘルプ表示:テキストエディタについて】

【→ヘルプ表示:ファイルロック方法について】
ステップ3)サーバへ転送



FTPクライアント使い、印の「kisomail/」ディレクトリごとサーバへ転送してください。

このとき、「自動判別」「文字コード無変換」で転送してください。


【→ヘルプ表示:自動判別、文字コード無変換か確認しよう】 Check it!

【→ヘルプ表示:初めてのFTPクライアント操作】
ステップ4)パーミッション変更



続いて、FTPクライアントを使い、今転送したファイルやディレクトリのパーミッション変更します。次のどちらかの方法でパーミッション変更してください。

※パーミッション設定値はサーバごとに若干異なります。

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
→方法A:不明な場合、よく分からない場合は・・・
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
ファイル構成図を参考に、
印と、印のファイルやディレクトリのパーミッションを変更してください。
通常、星印のないファイルやディレクトリは、パーミッション変更不要です。

(★印のファイルのパーミッションを「755」に変更できないサーバの方は、
方法Bを試してださい。)


〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
→方法B:suExec等で、オーナー権限でCGI利用できるサーバの場合は・・・
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

こちらのタイプのサーバでは、
印のファイルのみ、パーミッションを「 700 」へ変更してください。
方法Bでは、それ以外のファイルやディレクトリは、パーミッション変更不要です。
(近年のレンタルサーバではこちらが主流です。)
ステップ5)ウェブブラウザで動作確認



今設置したアドレスへウェブブラウザでアクセスし、動作確認します。

以上で設置完了です。
設置作業お疲れ様でした。

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
→正しくに動作しない場合には?
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

以下の点をもう一度確認してください。
どこか見落としてしまっていることが原因で動作しない場合も多いようです。

印のファイルに構文エラーは無いか
・Perlのパスは、正しいか
・ファイル転送方法は、正しかったか
・パーミッション変更は正しかったか
・ファイルロック方法は正しかったか

それでも動作しない場合には、よくある質問をご参考ください。


補足:メールフォームHTMLの作り方について
input.htmlを改造することで、デザインのみ変更できます。

入力項目の「name」「mail」「mail2」「message」は、必須です。
基本的なHTMLのformタグは、次のようになります。




■更新履歴
2006/05 v.1.05
エラーメッセージ表示画面のHTTPヘッダ「Content-Type」が「「Contnt-Type」となっていた誤字を修正。
(v.1.00 以降からバージョンアップして利用する場合には、「sendmail.cgi」を入れ替えて利用できます。)
2006/01 v.1.04
メール本文へ、差出人名とメールアドレスを表示されるよう改良。
2005/08 v.1.03
コピーメール受信用の機能を追加。
2005/07 v.1.02
ファイルロック解除のタイミングを変更。
2005/07 v.1.01
入力データの上限サイズの制限機能追加。
2005/06 v.1.00
配布開始。


■謝辞