ZeroMail ver 1.4.6~1.4.7

元々1.4.6として公開するつもりだったのですが、新しい機能がちょっぴり増えたので1.4.7にして公開しました。
変更点は以下の通りです。

未入力項目の表示スキップ

私自身ZeroMailを利用してアンケートフォームや予約フォームなど、項目が多いメールフォームを作る機会があったのですが
そういうフォームだと入力されていない項目が並ぶと非常に見にくいんですよね。
コメントでそれについて指摘頂いたのですが、その際「表示しないようにしたらどうか」と提案頂きまして
ソレダ!!と思ったので実装してみました。

設定はinit.phpの「inputのnameとその名称設定」の下に新しく追加してあります。
デフォルトはfalseです。これをtrueにすると有効になります。

マルチバイト文字を含むメールが送れるようになりました

そもそもこれは翻訳機能も付けないと意味が無いのでは…と思ったのですが、サポートの為に前倒し実装しました。
init.phpの先頭に文字コード設定があるのですが、これは確認やエラーなどのzeromail.phpが介して表示するページの文字コードのことで、メールエンコードには関係ありませんでした。

で、今回新しくその下にメールエンコードの設定を設けました。
初期は ja になっていてISO-2022-JPで送信しますが、これを uni にするとメールエンコードがUTF-8になり
中国語、韓国語、アクセントが付いたフランス語などのマルチバイト文字の送信が出来るようになります。

※サーバーによってはzeromail.phpが行う設定変更を受け付けてくれない場合があり、
機能が有効にならないことがあります。

“ZeroMail ver 1.4.6~1.4.7” の続きを読む

ZeroMail ver1.4.5

バグフィックスとver1.4で入れた機能に関する修正、あとコメントとかで頂いたリクエストの実装を行いました。
リポジトリで晒していたソースは1.4から段階的にバージョンアップしてたんですが、
ZIPで配布するのはこれが始めてになるので結構変更点があります。

なお、このバージョンから設置解説とバージョンヒストリーがCHANGELOG.txtというファイルに移ります。
init.phpがより修正しやすくなったと思います 😀
“ZeroMail ver1.4.5” の続きを読む

ZeroMail ver1.4

管理画面機能に対応するついでに全体的なバグフィックスと加筆修正を行いました。
また、解説ページがカオスになったので新しいドメインの方で書き直しました。

管理画面については個人的にあんまり必要とは思えなかったんですが、次のようなコメントを頂きまして

はじめまして。

初期のバージョンからお世話になっています。
最近のバージョンでファイル添付も可能になって、増々便利なメールフォームになったと思いますが、
このファイル添付を管理者通知メールに添付するのではなく、サーバーに保存しておいて、
管理者通知メールがくる→サーバーにアクセスしてダウンロードしてくる、という形には改変できますでしょうか。

大きなファイルが複数に渡ってまとめてメールで添付送信されると受信が大変なので、
都合のいい時にファイルだけ取りに行くという風にしたいのです。

管理者画面みたいなのにログインしてログをみてDLするなど選べればベストですが、
それだと改造が多岐にわたって大変そうなので、上記の機能ぐらいなら可能でしょうか。

確かにファイルが重いと添付できませんな…と思ったので対応しておきました。
管理画面機能はかなりやっつけなのでご意見ご要望頂けると嬉しいです。
“ZeroMail ver1.4” の続きを読む

ZeroMail ver1.3.1

ラジオボタン・チェックボックスの必須入力設定をするhiddenタグを使用した場合に、
全ての必須入力項目が記入されていてもエラーメッセージが表示されるバグがありました。
(kumaoさんコメントありがとうございます 😀 )

修正済みのver1.3.1がダウンロード可能ですが、下記の修正で直りますので
差し替えが面倒な方はソースコードを直接修正してみてください。

※このバグはラジオボタン・チェックボックスの必須入力設定をするhiddenタグが無い場合は発生しないので
設定を使って無い場合は未修正でもさして問題は無いです。

修正箇所

zeromail.php(ver1.3)の118行目から始まるhiddenの必須設定というコメント以下のif文内、
foreachの下にあるif行の末尾に始め中カッコ、
$error++;の下に終わり中括弧を追加する。

//hiddenの必須指定
if(isset($_POST["require"])){//
	$reqnames = explode(",",$POST["require"]);
	foreach($reqnames as $reqname){//このカッコを追加
		if(! array_key_exists($reqname, $POST)){
			 $formitem[$reqname]=convert_encode('<strong>この項目は必須入力です。</strong>');
			 $error++;
		} //このカッコを追加
	}
}

ZeroMail ver1.3

コメントで指摘頂いた自動返信が動作しないバグの修正を行いました。
ver1.2からはzeromail.phpとinit.phpのみ上書きでバージョンアップできます。

  • radio,checkbox 必須入力バグ修正(v1.2.1)
  • メール差出人フォーマット修正
  • メールヘッダの調整
  • メールヘッダ文字コード修正
  • 画像一時保存フォルダのURIを絶対パス化

説明に書き忘れていましたが、添付ファイル名が日本語だったらランダムな英数文字列に置換します。

ZeroMail ver1.2

AjaxのPOST送信に対応!
MooToolsのForm.ValidatorとかForm.Requestに向けての対応なんだけどjQueryとかでも使えます多分 😀
セッションを使った送信が相変わらずメインなので、Ajax使わないと送信できなくなったというわけではないです。

AjaxでPOST送信されなかった場合は通常のページ遷移による送信を行うため、
フォームタグの属性にactionを入れてあればJavascript無効でもメールフォームの送信ができます。
なのでAjaxでメールフォームを送信する場合と普通にセッションで送る場合とが混在していても、これまで通りコアファイルは1セットあればOK。

Ajaxで送受信を行う場合、デモが置いてある@PAGESのような広告が挿入されるサーバーだと
大抵zeromail.phpからのレスポンスにも広告が挿入されてしまうので、
JavaScript側でそれらを削除する設定が必要になってきます。(scriptだけでも削除しないと最悪フリーズする)
これについては解説ページの方に書きますのでそちらをご覧ください。

ダウンロードは準備中です。来週再開予定。
リポジトリにはうpしてあります。

Ajaxサンプル
通常送信サンプル
 (設置場所は@pages鯖です)

丁度2年前に書いたZeroMailになる前のソース(通しバージョンでいうと0.1)が発掘されたので、これも来週あたりにリポジトリで晒す予定。
実はそれが初の自作PHPスクリプトだったり。

“ZeroMail ver1.2” の続きを読む

ZeroMail ver1.1

暇だったのでファイル添付に対応してみました。
添付可能なファイル数に上限は設けていません。

添付可能なファイル:

  1. 拡張子:gif, png, jpg, pdf, swf, txt, xls, doc, ppt
  2. ファイルタイプ:image/jpeg, image/pjpeg, image/x-png, image/gif, application/pdf, application/octet-stream, application/x-shockwave-flash, text/plain

ファイルタイプの確認はcheck_minetypeという関数で行っているので、
配列の値を削れば添付可能をJPEGのみにしたりもできます。

全体的に追加変更があるので、バージョンアップする場合はファイル添付機能を使う使わないに限らず
すべてのコアファイル(zeromail.php、init.php)の上書きが必要です。

次はAjaxバリデータに対応すると思う。

Zeromail ver0.8

Zeromailをver0.8にバージョンアップしました。
ver0.6~0.7はGoogleCodeの方でちょっと晒してましたが配布はしてません。
ver0.5からの変更点は次の通りです。

confim.phpが吐くソースが文字コード変換されてなかったので修正
SJISとEUCの場合文字化けしてたっぽい

予約済みname値と同じ文字列がname値に含まれていればチェックを行うように修正
name2やusername、mail2などの値でも予約name値と同じチェックをします。
名前(name)の場合は必須入力の確認するのはnameという値のみです。
メールの自動返信はemailという値に入力されたアドレスに返信を行いますが、
値がなかったり間違ったりして送信できなくてもエラーは出ません。

ローマ字の名前に対応
init.phpでALPHANAMEをtrueにすると半角英数のみの名前でも送信できるようになります。

Message()で表示する文字にspanタグつけた
成功時のクラス名 conf、エラー時のクラス名 err です。

<span class="err">前のページに戻って入力エラーを修正してください。</span>
<span class="conf">入力内容に間違いが無ければ、送信ボタンを押してください。</span>

サンプルのフォームとスタイルシート変更
配布予定のスケルトンテンプレートと同じもの。フォーム入れる要素をテーブルにした。

郵便番号のname値をzipcodeにして正規表現にハイフンなし追加
ver0.5までのpostnumは使えません。ので変更必須。
半角英数7文字か、ハイフン込みで8文字(3文字+ハイフン+4文字)のチェックをします。
郵便番号が存在するかどうかは確認しません。
全角数字は半角に変換します。

電話番号の正規表現変更
こっちの記事と同じやつです。

先頭3桁が「090」「080(0800含む)」「070」以外であり且つ、市外局番は2〜5桁、市内局番は1桁(田舎の方. 北海道では普通)〜4桁(東京とか)、下4桁は固定で、ハイフン含めて合計12桁である場合
携帯の古い090と新しい080およびPHSの070から始まる電話番号の場合は、3-4-4桁フォーマットでハイフン含めて合計13桁の場合
フリーダイヤル「0120」から始まる電話番号の場合は、4-3-3桁および4-2-4桁フォーマットでハイフン含めて合計12桁
フリーダイヤル「0800」から始まる電話番号の場合は、4-3-4桁でハイフン含めて合計13桁

ハイフンなしの場合は先頭の市外局番と文字数をチェックします。
全角数字は半角に変換します。

自動返信のname値にreply追加っていうか変更
Replyも使えますが廃止予定なので変更をお願いします。

checkboxとradioの必須入力チェック追加
requireという名前のhedden要素で次のように必須入力にしたいname値を指定します。

<input type="hidden" name="require" value="name値,name値" />

ファイル添付は対応していません。

ZeroMail ver0.5

ZeroMailのバージョンが0.5になりました。

変更点は大体次の通りです

  • UTF-8以外の文字コードが使えるようになった(EUCとShift-JISにも対応)
  • 確認画面のボタンとメッセージ出力を切り離した
  • テンプレートの残念なケアレスミス修正(headの閉じタグ抜けてた)
  • その他色々と気になった所を変えた(バージョン出力周りとか)

やっつけ仕事ですがShift-JISとEUCでも文字化けしないようにしました。

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

  1. メイン3ファイル(zeromail.php、init.php、confim.php)を上書き
  2. init.phpの設定を変更
  3. 確認画面(check.php)にMessage()関数を追加

init.phpの設定は、文字コード設定とHTML出力部分が変わってるだけなので、
その他の設定はコピペでOKです。

ZeroMail ver0.4

ZeroMailの中ちょっと変えました。
メアドとURLの正規表現部分だけなので、v0.3そのまま使ってても動作には問題ありません。
バージョンアップする際はzeromail.phpだけ上書きでおkです。
動作におかしなところがあれば教えてください。

フォーム要素の設定が項目多くなるほど面倒なので、
もっと楽に設定出来るようにしたい・・・(=ω=)

XHTML&UTF-8なメールフォームphpを晒してみる

自分好みのメールフォームが欲しかった。ので作った。

なんか配布されてるのってHTMLにEUCじゃないですか。
最近組むサイトは99%の割合でXHTMLにUTF-8なので、お問い合わせフォームだけ文字コード変えたりdocktype変えたりしなきゃいけないのは面倒くさい。
なら自分に都合のいい条件で作ればいいじゃない!と妖精さんが。

説明とかはこっち(ZeroMail)に。
テスト環境が狭いので何かしらバグはあるんじゃないかな…多分。
見つかれば出来る限り潰します。ので教えてください。是非。

余談…
Templateカテゴリにあるformサンプルは全部これの初期設定だったり。