About

ZeroMailはオープンソースのメールフォームスクリプトです。
言語はPHPで、mail関数およびmb_send_mail関数で送信します。
HTMLタグやCSSが使いこなせるWebクリエーター向けな仕様となっているので、
初心者には少々設置難易度が高いかもしれません。が、自由度は高いと思います。

元々は自分が商用サイトを組んでいた時に

  • UTF-8に対応しているメールフォームが皆無だった
  • 巷のメールフォームが出力するソースが気に入らない
  • 商用サイトだからクレジットの表示は無いほうがいい
ということでカッとなって作ってみたものです。
頂いた要望などを吸収している内にいつの間にか多機能になっていました。

Ajaxに関してはMooToolsのForm.ValidatorとForm.RequestをGoogleで検索しても
全然日本語のページが無かったので普及させるべく対応させてみたのですが、
仕様に沿ったJavaScriptファイルさえ用意すれば多分jQueryやprototypeでも動くんじゃないかと思います。

重要なお知らせ (2012/4/18)

開発は2010年以降止まっていましたが、サポートも停止します。
不具合のお問い合わせをいただいても対応できません。

現行のスクリプトは色々と時代遅れになっているため、イチから書き直す事にしました。
初期リリース時に含めようとしている仕様は次の通りです。(細かい所は省略)

  • PHP5.4以上で動作する
  • 1.4.7の設定、テンプレートを流用できる
  • HTML5対応
  • sendmail、qmail対応

以下は検討中です。

  • Ajax対応(JavaScript、PHPともに他フレームワークのプラグインとして)
  • ファイル添付機能

対応しないかもしれない機能もあります。

  • 管理画面(ニーズがよくわからない)
  • EUC、Shift-JIS対応(今時使うことがあるのだろうかこの文字コード)

ライセンスは PHPがGPL、HTML・CSS・JSはMITのハイブリッドを予定しています。

最近の個人・商用サイトにおけるメールフォーム需要がよくわからないので、
ご意見・ご要望を Twitter or メールで教えて頂けるとうれしいです。

主な仕様(1.4.7まで)

メールフォームで必要な事は一通りやれます。

  • 項目設定自由自在
  • テンプレートでデザインが変えられる
  • PHPが出力するソースがValidである
  • UTF-8、EUC、Shift-JISのいずれかで動作する Ver0.5~ UTF-8で動作する
  • スパム対策
  • 入力チェック
  • 自動返信
  • 1スクリプトで複数のフォームに対応
  • メール本文に入れるヘッダとフッタのカスタマイズ
  • ファイルが添付できる(添付数=ファイルフィールドの設置数) ver1.1~
  • AjaxによるPOST送信に対応 ver1.2~
  • 管理画面機能(送信ログ作成、CSVダウンロード、添付ファイル一括ダウンロード)ver1.4~
  • マルチバイト文字の送信に対応(中国語・韓国語・アクセント付き文字など)ver1.4.7~

Shift-JISおよびEUCでも動作しますが、Ajax利用時はUTF-8でないと文字化けします。
スクリプトのエンコーディングはUTF-8です。

PHPバージョンが4.3.0以上のサーバーなら大抵動きます。
将来的にバージョン4には対応しなくなる予定なので、PHP5.0.0以上での使用を推奨します。
PHPのmb_send_mail()関数およびmail()関数が使えないとメール送信できません。

Demo

サンプルのフォームからメールは送信されません。

ダウンロード

お約束

  1. ライセンスは GPL v3 License です。
  2. 個人・法人問わずフリー使用できます。
  3. 著作権表記はソースそのものを削除しないなら、CSSでvisibility:hiddenやdisplay:noneしても構わないです。
     メール本文にもこっそり挿入されますが、テンプレートのcopyrightが生きてるなら消してもいいです。
  4. スクリプトを使用して損害が発生しても作者は一切責任を負いません。
  5. ↑なので事業者の代行設置も自己責任でなら無問題。要するに商用利用OK。
  6. でも悪いことには使わないでください…
  7. 突然飽きたりして配布や修正をやめる可能性があります

最新版

Version 1.4.7 Download

バージョンアップ情報はブログのINFOMATIONカテゴリで投稿してます。 ブログのRSSを受信すると便利かもしれないです。
また、簡単なアナウンスはTwitterでも行っています。

おかしな動作や要望などはコメントorメールで教えてください。

拡張ファイル

Ajaxメールフォーム Version 1.3.3 Download
管理画面機能 Version 1.0.4 Download

CSS Skin

デフォルトのソースをベースにして書いた着せ替えCSSスキンです。
MITライセンスなのでCopyrightさえ消さなければ改変も再配布も自由。

Pureblue 準備中
デフォルトのスタイルシート 画像未使用
Monotone 準備中
CSS3のグラデーションを多用 画像未使用
Midnight 準備中
黒+青 画像未使用

HTML+init

コーディング済みのフォームとname値設定をセットにしてあります。

問い合わせフォーム(ノーマル) Table
デフォルトのフォーム
問い合わせフォーム(シンプル) Table
Name・EMAIL・URL・Message・Replyの5項目。ラベルが英語
問い合わせフォーム(フル) Table
思いつくもの全部載せた
求人応募フォーム Table
たまに使うからあると便利だと思った

旧バージョン

テスト段階のソースやリリース済みバージョンはリポジトリにあります: GoogleCode Project Home

バージョンアップ手順

ZeroMail ver1.4.7 へのアップデートは下記手順を取って下さい。

  • ver1.4.5から → zeromail.php、init.php、confirm.phpを上書き
  • ver1.3以前から → 全てのファイルを上書き
  • Ajax Pack利用 → MooToolsのCoreファイルを1.3にする。mootools-formpack.js上書き
  • Admin Pack利用 → index.php上書き

» もっと見る


ZeroMail ver1.4.5 へのアップデートは下記手順を取って下さい。

  • ver1.4から → zeromail.phpとinit.phpを上書き
  • ver1.3以前から → 全てのファイルを上書き
  • Ajax Pack利用 → mootools-formpack.js上書き
  • Admin Pack利用 → テンプレート以外のファイルを上書き。追加された設定項目を設定する

ZeroMail ver1.4 へのアップデートは、全体的に加筆修正があるので
バージョンに関わらず全てのファイルを上書きをしてください。
また、今バージョンよりテンプレートファイルすべてにcopyrightを挿入するようにしました。
旧バージョンのテンプレートを修正して利用中である場合は、お手数ですがcopyrightソースのコピペを行ってください。

Ajax追加ファイルはzeromail_ajax.jsのみ上書きでバージョンアップ出来ます。


ver1.3.1へのアップデートは下記手順を取って下さい。

  • ver1.3から → zeromail.phpとinit.php上書き
  • ver1.2以前から → 全てのファイルを上書き

ver1.3へのアップデートは下記手順を取って下さい。

  • ver1.2から → zeromail.phpとinit.php上書き
  • ver1.2以前から → 全てのファイルを上書き

ver1.2へのアップデートはすべてのファイルを上書きしてください。
(設定ファイルの中身がかなり並び変わっているので注意)

ver0.9以前からver1.1へのアップデートは、ファイル添付機能を使わない場合も下記手順を取って下さい。

  1. メイン2ファイル(zeromail.php、init.php)を上書き
  2. init.phpの設定を変更。ErrerDisp、Message、Button関数内を書き換えている場合は修正しなおす
  3. フォームのname値など変更(Reply→reply)
  4. ファイル添付機能を使う場合は一時保存ディレクトリを作成する

ver0.8からver0.9のアップデートはinit.phpとzeromail.phpの上書きを行ってください。


ver0.5以前からver0.8のアップデートは以下の手順で出来ると思います。

  1. メイン3ファイル(zeromail.php、init.php、confim.php)を上書き
  2. init.phpの設定を変更
  3. フォームのname値など変更

メインファイルの上書きは必ず行ってください。

バージョン履歴

  • 2010-03-11 ver1.4.7
    • [new] 未入力項目の表示スキップ(定数ZM_EMPTY_VALUE_SKIP追加)
    • [new] マルチバイト文字への対応(定数MAILCODE追加)
    • [Ajax] MooTools Core 1.3.1に対応
  • 2010-01-08 ver1.4.6(リポジトリのみ)
    • [fix] ルートディレクトリ定数名変更(Adminも)
    • [fix] init.phpをルート以下から読み込むように変更
    • [fix] 本文のリンク記述許可数設定の変数が反映されてなかった
    • [Admin] ログファイルがない場合のエラーメッセージ表示
    • [fix] 添付ファイルのエンコード後にchunk_split
    • [fix] _req使用時にエラーメッセージが出ないバグの修正

» もっと見る

  • 2010-10-28 ver1.4.5
    • [new] 管理者宛メール件名と自動返信用コメントのタグ置換
    • [new] matchコマンド(2つの入力内容が同一かチェック)
    • [new][Admin] ログイン画面のid項目
    • [Ajax] zipcode-btnと-autoを分離
    • [Admin] log.php 300kb超過警告
    • [Admin] Downloadロジック変更
    • [fix] アンダーバーの入力条件設定にスペースを許可
    • [fix] 日本語ファイル名チェックの正規表現変更
    • [fix] Ajaxにもrep
    • [fix] initのロードをrequireに
    • [fix] initファイルがない場合の例外処理
    • [fix] id使用可能な文字列追加+チェック厳密化
    • [fix]SJIS,EUCの文字化け修正
    • [fix]SJIS,EUCの正規表現チェック修正
    • [fix]ファイル添付エラーメッセージエンコード変換抜け
    • init.phpの解説をCHANGELOG.txtに移す
  • 2010-07-26 ver1.4
    • 管理画面機能追加(ログ保存/新定数)
    • 添付ファイル名に関する修正(basenameとか)
    • FILEPOOL(添付ファイル温存)設定追加
    • MIMEタイプ追加・確認ロジック修正
    • hiddenのrequireを$_FILESにも適用
    • メッセージに付与されるクラス名とタグ統一
    • zeromail_regtag_replaceをinitに移す
    • 管理画面機能の状態確認を関数化(is_admin)
    • VIEWSTYLEのdefaultソースにクラス付与
    • エラーページのファイル名を定数化(ERRORPAGE)
    • デフォルトテンプレートの修正(クラス・ID名の整理とCSSスキン化)
    • zeromail.phpのchangelogをテキストファイルに移す
    • confim.phpをconfirm.phpに変更
    • Copyright出力関数追加
    • zeromail-ajax.jsに#resultへのスクロール追加
    • zeromail.php直接アクセス対策とエラー表示
  • 2010-06-21 var1.3.2(未配布)
    • Ajax確認画面(confim=true)
    • rep[name]設定と{name}タグによる置換
  • 2010-04-30 ver1.3.1
    • radio,checkbox 必須入力バグ再修正
  • 2010-04-07 ver1.3
    • radio,checkbox 必須入力バグ修正(v1.2.1)
    • メール差出人フォーマット修正
    • メールヘッダの調整
    • メールヘッダ文字エンコード修正
    • 画像一時保存フォルダのURIを絶対パス化
  • 2010-03-05 ver1.2
    • Ajaxへの対応(ロジック書き換え+NOSCRIPT環境への対応追加)
    • メールアドレスを必須にするかどうかの設定追加
    • 差出人名設定追加
    • ブロックするIPの設定追加
    • エラーでセッションを破棄
    • ユーザー情報にIP追加と並べ替え
    • メールヘッダ変更(主にfrom)
    • エラー表示をテンプレート化(error.php)
    • 設定ファイルの項目並び替え
    • 画像確認時のターゲット指定追加
  • 2010-03-04 var1.1.1(配布なし)
    • 入力チェック強化
    • 平仮名・片仮名のチェック追加
    • メールアドレスを必須にするかどうかの設定追加
  • 2010-03-01 ver1.1
    • ファイル添付に対応
    • 自動返信name値"Reply"を削除
    • 自動返信バグ修正
    • 関数を外に出したり定数化したり
  • 2009-11-12 ver1.0 メールアドレスのチェックを細分化(zip配布なし)
  • 2008-12-22 var0.9 メール返信の条件ミス修正
  • 2009-06-02 var0.8
    • 文字コード変換修正(confim.php)
    • 予約済みname値のif条件変更
    • ローマ字の名前に対応(フラグALPHANAME追加)
    • Message()で表示する文字にspanタグつけた
    • サンプルのフォームとスタイルシート変更

    ※09/6/2~09/6/4 13:00に配布していたver0.8のサンプルソースがEUCになってました。

  • 2009-04-27 var0.7(zip配布なし)
    • 郵便番号をzipcodeにして正規表現にハイフンなし追加
    • 電話番号の正規表現変更
    • 自動返信のname値にreply追加っていうか変更
    • checkboxとradioの必須チェック追加
  • 2008-12-22 var0.6 指定エンコードへの変換を関数化 (zip配布なし)
  • 2008-08-25 var0.5 文字コード設定・Message関数追加。その他色々
  • 2008-06-24 var0.4 メールアドレスの正規表現ちょっと変えた
  • 2008-05-27 var0.3 残念なミス修正ついでにmb周りの設定追加してみた
  • 2008-05-12 var0.2 とりあえず晒してみる
  • 2008-03-XX var0.1 moomailって名前だった