PHP工房トップ

HOME > 【MailForm01】多機能メールフォーム(フリー版)

【MailForm01】PHP多機能メールフォーム フリー(無料)版

【重要】※要修正
PHP8以上の場合にエラーとなり送信できない問題

ただし、2020/05/08以前にダウンロードされた方が対象です。
2020/05/08以降にダウンロードされた方は関係ありませんので無視して下さい。
対象かどうかの確認方法はファイル内上部に「ver2.0.0」など、バージョンが記述されている場合は改修済みですので対応不要ですが、記載がない場合(最終更新日2018/07/27などとなっている場合)は修正が必要です。

バージョン(ver●●)が表示されている場合の記述例 
PHPメールプログラム フリー版 ver2.0.0 最終更新日2021/05/20
※この場合は修正の必要はないということです。

【症状】
送信した際にPHP7.4の場合は環境によってエラーが表示される。PHP8以上の場合はエラー表示(またはページ真っ白)となり、送信が行えなくなります。

【原因】
PHPのバージョンが7.4以降の場合、get_magic_quotes_gpc()関数が非推奨となったため、環境によってはDeprecatedエラーが表示され、
PHP8以降では廃止になったため、Fatal errorが表示され、送信が出来ません。

【解決方法】
mail.phpをエディタソフトなどで開いて「get_magic_quotes_gpc()」の文字をファイル内検索して下さい。
※主にCtrl+Fで検索できます。
フリー版の場合は2箇所、有料版の全機能搭載版の場合は4箇所あります。

以下のような記述です。
if(get_magic_quotes_gpc()) { $out = stripslashes($out); }

あとはその行を1行まるっと削除するだけです。削除しても機能には影響ありません。

以上です。エラーが出ている場合はこれでエラー表示が消えるはずですので確認して下さい。

【説明】
get_magic_quotes_gpc()関数はmagic_quotes_gpcという設定がONかどうかチェックするためのものですが、 「magic_quotes_gpc」自体はPHP5.4で廃止されたため、本来は不要な記述ですが、古いバージョンでの利用も考慮し念の為に残していました。 ですので、PHP5以上であれば不要な機能なので削除して構わないのです。

誰でも無料で使えるPHPを利用したフリーのメールフォームプログラムです。サーバー環境は問わず、基本的にほとんどのレンタルサーバーで動作します。

1ファイルのみのシンプル&設置が容易な無料(フリー)のPHPメールフォームプログラムです。
設置の容易さはおそらくトップクラス(自称ですが)かと思います。面倒な設定は一切必要ありません。

お問い合わせの受付などに最適です。 項目を変更すればアンケートなどにも使用可能です。設置もいたって簡単です。 メールフォームプログラムに必要なものはほとんど付いています。

特に難しい設定は必要ありません。フォームページのhtmlはご自身で用意したものでも同梱しているサンプルをそのまま使ってもOKです。大きな特徴としてフォームで送信されたデータをすべて自動で取得、送信します。
name属性の値は日本語OKです。日本語にすることでその名前がそのまま確認メール、及び送信メールの各項目名となります。
※同梱しているcontact.htmlをご参考下さい。
※特殊文字、機種依存文字などの場合文字化け等が起こる可能性があります。

とりあえずであればファイル内に受信するメルアドとサイトのトップページのURLを記述し、サーバーにアップすれば設置は完了です。
必要に応じてその他の設定(mail.phpをエディタで開いて)を行なって下さい。

ご使用には設置予定サーバーでPHPが動作することが必須です。レンタルサーバーであれば今時まず問題無いですが(PHPが動かないサーバーは皆無と思います)、無料サーバーなどの場合はまず動かないと思います。

主な機能と特徴

  1. 完全無料のプログラムです。もちろん商用使用でもOKです!どんなサイトでも設置いただけます。クライアントへの納品などでももちろんOKです。特になんら制限はありません。
    ただ実際に導入してみてもし気に入っていただけましたら「
    」していただけるとさらにより良いものへと進化する可能性があります(笑)
  2. こちらのフリー版のみ著作権リンク表記はデフォルトの完了画面にのみ表示されます。ご自身で完了ページを用意すれば著作権リンク表記無しで運用可能です(ファイル内にて設定可)完了ページは普通のhtmlファイルでOKです。(CV率の計測も可能です)
  3. 使うファイルはたった1つだけです。(mail.phpのみ)なので設置・管理が容易です
    ※すべての設定はmail.phpで行います。
  4. すべてのフォームパーツを使えます。テキスト(textarea含む)はもちろんラジオボタン、チェックボックス、プルダウン(select)なども。もちろん項目数に制限はありません。すべての項目を自動で取得、送信しますので面倒な設定が不要です。
    チェックボックス使用時は注意点がありますので必ず確認してください。ファイル内にもコメントしています。チェックボックス使用時の注意点はこちら
  5. 送信内容確認画面付き(デフォルトはON)
  6. 自動返信メール付き
    (送信内容を送った人に自動送信します。デフォルトはOFFになってます。また送った人に送るメール本文の文頭に「○○様」と表示させることも可能です。いずれもmail.php内で設定可能。
  7. 入力必須項目も設定可能。※ファイル内にて設定可
  8. 携帯(ガラケー)、スマホも対応しています。※ガラケーは当然3キャリアで要テスト。ガラケーはSHift-JISが無難です。但し、すべての機種での動作保証は出来かねます。
  9. Javascriptなどのブラウザ依存のスクリプト等は使用していませんので、基本的にはブラウザ間の問題は発生しません。(あくまで実行結果がHTMLで出力されるだけですので)
  10. フォーム用のHTMLファイル(contact.html)も同梱してます。もちろんオリジナル、または既存のフォームページでもOKです。action属性でmail.phpを指定ください。
  11. 自動返信メールのフッタ部にオリジナルの署名等を表記可能。(デフォルトは無し)
  12. 確認画面はデフォルトではテーブルのみのシンプルなデザインですが、オリジナルのデザイン(現行サイトのデザイン)も反映できます。
  13. メールアドレスの形式チェック付き。
    ※xxxx@xxxx.xxxまたはxxxx@xxxx.xxx.xxxかどうか。@マークが1つかどうか。
    ※有効なメールアドレスが弾かれてしまうということはありません。
  14. Bcc送信が可能(ファイル内のコメントを参考ください)※複数宛先も可
  15. PHP4.3.9~PHP7までの幅広いバージョンで動作確認しています。
  16. 任意の複数の項目の連結が可能です。(2014/12/12アップデートによる新機能)
    下記「更新履歴をご参照下さい。」
  17. 2018/07/28の大型アップデートによりワンタイムトークン(PHPセッション)によるスパム対策、CSRF対策、自動返信メールの送信元メールアドレスの設定、-fオプションによるエンベロープFrom(Return-Path)の設定、機種依存文字の変換などの新機能が追加されました。またフォームのレスポンシブ化も行いました。 詳細は「更新履歴をご参照下さい。」

サンプルデモ

お名前とメールアドレスを必須項目に設定しています。実際には送信されません。

実際には既存のサイトに組み込むことが多いと思いますので以下はそのサンプルになります。

メールフォームダウンロード

フォームページの文字コードと同じ文字コードをダウンロードください。でないと必ず文字化けします。
(フォームページが現在無い場合にはUTF-8版をオススメします)

特に理由が無ければ、また可能であればできる限りShift_JIS版以外をオススメします。
※Shift_JISはPHPと相性がよくありません(以下「よくある質問」も参照下さい)

メールフォーム Shift-JIS版 

メールフォーム EUC-JP版 

メールフォーム UTF-8版 

zipファイルにしてありますので、ダウンロード後解凍してください。
解凍ソフトは特になんでもOKですが、無ければ以下のLhaplusとかで良いと思います。
http://www.forest.impress.co.jp/lib/arc/archive/archiver/lhaplus.html

動作確認は十分に行なっておりますが、万が一最新版でなんらかの不具合、お気づきの点などがありましたらお気軽にお問い合わせよりご連絡ください。
または、以下旧バージョンをお試し下さい。また下記よくある質問もご確認下さい。

旧バージョンダウンロード

関連プログラム(その他の機能搭載版)

設置方法

1.ダウンロードファイルを解凍する

以下2ファイルがあります。
・mail.php ・・・メールを送信するためのメインファイル
・contact.html・・・フォームページのサンプル。 そのまま使ってもいいし、引用、またはオリジナル、既存のフォームページでももちろんOKです。

2.mail.phpをエディタソフトで開き、必要な設定を行う

mail.phpファイルをTeraPadなどのフリーのエディタもしくはDW等で開き、必要な項目を設定してください。
※メモ帳は使用禁止です。ファイルが壊れます。
※必ずUTF-8のBOM無しで保存下さい。TeraPadの場合はUTF-8Nです。(通常はそのまま上書きすればOKです)

初めに「必須設定 必ず設定してください」の箇所を必ず設定下さい。
設定の説明はファイル内にコメントしてありますので参考ください。
任意設定箇所が多めですが、様々な用途に対応するためになります。あくまでも必要なもののみ設定ください。

3.フォームページ側を設定する

オリジナル、または既存のフォームに導入する場合には下記例のようにフォームページ側のformタグのaction属性の値をmail.phpへの相対パス(絶対パスも可)を記述すればOKです。 method属性も必須です。必ずpostを指定してください。

フォームタグ例 ※ファイル名がmail.php(デフォルト)の場合

サンプルのhtmlファイル(contact.html)がありますので、そちらを参考にしてください。
※サンプルのhtmlファイルはすでに送信可能になってます。初めてであれば一度こちらで送信してみてください。
※サンプルのhtmlは不要であれば削除下さい。
※同梱のcontact.htmlをベースに作成される場合には、<form ○○>タグから</form>までをコピペし、必要に応じて項目を変更、削除等行って下さい。

name属性の値がそのまま確認画面、送信メールの各項目名になりますので、日本語で受信する場合(ほとんどの場合そうだと思います)にはname属性の値を日本語にして下さい。name="○○" の○○の部分です。

<input type="text" size="30" name="お名前" />
こうすれば確認画面、及び送信メールで 
【お名前】ユーザが入力した値
のように表示されます。
このあたりも同梱のcontact.htmlを参考にして下さい。
すべての項目を自動で取得、送信します。項目を増やしても自動で処理が行われますのでその他面倒な設定は一切不要です。

※name属性の値に半角スペース、機種依存文字、特殊な記号、特殊な漢字などは使用できません。

4.サーバーにアップロード

mail.phpとフォームページをサーバーにアップします。上記のタグの例では同じ階層に。
※極々稀ですが、サーバーによってはphpファイルのパーミッションを変更する必要がある場合があります。サーバーのマニュアル等に書いていますので参照して変更下さい。(まずは送信してみてからでも構いません。正常に送信できれば最適なパーミッションになっているということになりますので)

5.送信テスト

フォームページから実際に送信してみて下さい。基本的には即時送信されますので、メーラー等で受信を確認して下さい。自動返信を設定している場合はそちらもご確認下さい。正常に受信できていればこれで設置完了になります。もし届かない等の場合には、以下「よくある質問」を参照してみてください。
※追記 GmailでGmail以外のメールを受信している場合、受信までに30分~1時間程度の遅延があります。これはGmail側の仕様ですので悪しからずご了承下さい。また、サーバによっては迷惑メールとされる可能性があります。(ロリポップでとあるメールアドレスで発生したとの報告を受けています。管理人のエックスサーバーではそのようなことは一度も起こっていません)

フォーム項目の変更方法について

デフォルトのメールフォームではおそらく不要な項目があったり、追加、変更したいことがほとんどでしょう。
項目の変更自体はいたって簡単です。(ただし、最低限のHTMLの知識は必要かもしれません)

フォーム部分のソースを確認いただくと分かりますが、
inputタグやselect、textareaなどすべての項目で
name="お名前" (「お名前」部分を「name属性の値」と呼びます)
などとなっているのがわかりますが、 この場合、name属性の値「お名前」と入力されたデータ(または選択されたもの)がセットで送信されます。
要するに、上記の場合で「テスト太郎」と入力された場合、確認画面や送信されるメールでは
【 お名前 】テスト太郎
のようになるということですね。 このプログラムはフォーム項目を自動ですべて取得、送信してくれますので、 あなたはこのフォーム部分のみ変更すればいいだけです。
※要するにフォーム内の「name="○○"」のすべてを送信するということです。
※フォーム内とは<form>タグから</form>タグまでを指します。

ですので、不要なものはまるっと削除すればいいだけですし、 追加したい場合には、既存の記述をコピペするなどで
name="お名前" → name="フリガナ"
のように変更すればOKということですね。
ただし、name="○○" の○○部分には使用できない文字列があります。
半角スペース、機種依存文字、特殊な記号などは使用できませんのでご注意下さい。


またテキストフィールドである「input type="text"」以外にもすべてのフォームパーツが使用できます。
※ただし、チェックボックスのみイレギュラーで、デフォルトのフォームの記述を見ていただくと分かりますが、
name="○○[]" 
のように後ろに[]が付いているのがわかると思います。
チェックボックスの場合のみname属性の値の後ろに[]を記述するルールが有りますのでご注意下さい。
※尚、添付ファイル機能の「type="file"」は使用できません。

項目の必須設定についてはmail.phpにて管理されていますので、 必須項目を変更する場合などはmail.php内で指定下さい。もちろんフォーム側でrequire属性を使ったり、JSでの必須設定でもOKです。(ただしその場合でもスパム防止の観点からPHP側でも必須設定を併用して設定されることをオススメします)

以下のページでもより詳しく解説していますので、必要に応じてご参考下さい。

項目連結機能について

※2014/12/12 のアップデートで実装
複数の項目を連結したり、入力値の末尾に任意の文字列を付けたり出来ます。
たとえば名前や郵便番号、住所、電話番号などを複数の入力欄に分けている場合に連結したり、人数や金額の入力の末尾に任意の単位を設定できます。(例 1名、1,000円など)
この機能はあくまでもオプションです。必要が無ければ使う必要はありませんし、特に意識する必要もありません。今まで通りの使用法で問題ありません。
こちらのマニュアルを以下に用意しましたので、必要に応じてご参照下さい。

レスポンシブ(対応)への導入について

※2018/7/28追記
2018/7/28のアップデートにより以下レスポンシブ用のCSSを配布版のファイルにも記述しました。そのためこれからダウンロードされる方はすでに反映済みですので読み飛ばして下さい。

もちろんレスポンシブであってもまったく問題ありません。レスポンシブはPHPとは特に関連はなくあくまでもhtml、CSSの範疇です。またもちろんプログラム自体はスマホでも問題なく動作します。

レスポンシブについてはあくまでも設置される方ご自身が実装されることを想定しております為、 あえてレスポンシブ用のファイルは配布しておりませんのでご了承下さい。

これはこちらでレスポンシブ用として配布しても、実際には既存のサイトなどに組み込んだり、それぞれが自身の希望の形で実装することが多い、また適切なブレイクポイントについても意見が分かれるなど、 その性質上、配布版に反映することは適切ではないと考えています。かえって作業量が増える可能性があるというのもあります。

またフォームだけレスポンシブというのも通常はありえませんので、 レスポンシブ化される方はすでにレスポンシブ化の技術を持っているということもあります。 こういった理由からレスポンシブについてはあくまでも設置される方ご自身で対応いただければと思います。

レスポンシブ用CSSの参考ソース

参考までにレスポンシブ化の参考ソースを掲載しておきますので必要に応じて使って下さい。
※あくまでも必要最低限のもののみとなりますので微調整などは適宜ご自身で行なって下さい。

よくあるパターンではありますが、 テーブル(table)はスマホのように画面幅が狭いとそのままでは見づらいため、 テーブルのセルをブロックレベル要素に変更するというのをよく行います。

以下CSSは配布版のcontact.htmlとmail.phpの場合の例です。
contact.htmlとmail.phpのhead内に追加することで簡単にではありますがレスポンシブ化が可能です。
(必ずPC用のCSSの下に追加下さい)
既存のフォームなどに導入する場合には適宜セレクタなどを変更下さい。
これだけでひとまずレスポンシブ化はできますが、その他微調整などは各自で行なって下さい。(ブレークポイントも適宜自由に変更下さい)

また必ず以下のmetaタグをhead内に追加しておく必要がありますのでご注意下さい。

また必ず実機でも確認してください。

よくある質問と対処法など

メール送信不具合関連

確認画面での不具合関連

文字化けや誤変換関連

その他(カスタマイズ方法や対処法含む)

ご利用について

HTMLやCSSなどをある程度理解されている方を対象としています。
設置、カスタマイズ方法などのサポートは行っておりませんのでご了承ください。
管理人1人で運営していますので。。。
設置法、フォーム(タグ)、CSS等に関するサポートは有料にて承ります。

不具合等があれば遠慮なくご連絡ください。

動作確認済PHPバージョン

PHP4.3.9~PHP8.1

動作確認済レンタルサーバー

  • エックスサーバー [PR]
    ※個人的にはここが好きで、もうずっとここです。このサーバーで困ることはまずないでしょう。
  • ロリポップ! [PR]
    ※ただしここはWAF機能がONの場合、CMSプログラムで問題が発生する可能性が高いです。詳細はこちら
    またサーバーがブラックリストに登録されてしまいメール系のプログラムで受信できない大問題も多々確認されています。詳細はこちら
     ただコスパ的には有りだと思います。
  • カゴヤのレンタルサーバー [PR]
    ここは高機能、高スペック、良心的な価格でありながら風俗系のサイトがOKという非常に貴重なサーバーです。個人的には風俗系のサイトであればこのサーバー以外の選択肢はないと思ってます。
  • さくらのレンタルサーバ [PR]

その他一般的なレンタルサーバーであれば問題なく動作するはずですが、
すべての環境(サーバー)での動作を保証するものではありませんのでご了承下さい。

問題が出る可能性が高い、またはそのままでは必ず問題が出ることが分かっているサーバー

※現状私自身が把握している範囲です。(実際に確認していますのでちゃんと根拠もあります)
1,Yahoo系(ジオプラス、ウェブホスティングとも)※Softbankも含む
2,KDDI系(CPI含む)
3,NTT系(WebArena(suiteX)、NTTビズリンク(BizLink))
※プロバイダー系は特に問題が多いです。(個人的には絶対に借りてはいけないと考えています)
4,スマイルサーバー
5,ファーストサーバ

特にCPI、NTT系、スマイルサーバー、ファーストサーバで問題がある場合はこちらも参照下さい

経験上、結局は「餅は餅屋です」。プロバイダー系はプラン、金額に関係なく特に問題が多いです。サーバーの問題で時間を取られるのは非常に無駄ですし、その先ずっと影響しますのでサーバー選びは慎重にされることをオススメします。 特に理由がなければあえてこれらのサーバーは借りないほうが得策でしょう。高いから良い、安いからダメという安易なものでもありませんので難しいところですね。(まぁ安いには安いなりの理由があるのですが・・)

ご利用規約

・無料版プログラムはフリーウェアです。ただし、著作権は放棄するものではありません。
・プログラムの著作権表示リンク(ページ下部にある当サイトへのリンク)を無断で削除することはできません。
(一律2,000円+消費税の削除依頼をいただいた場合を除く)
・プログラムの再配布、再販売は禁止です。
 ※ただしクライアントへの納品などでシステム費用、設置費用として請求されるのは問題ありません。
・プログラムによって何らかの不利益、損害が生じても一切の責任を負いません。
 あらかじめご了承の上ご使用ください。
 もし何らかのトラブルがあった場合には、ご相談いただければ解決策が見つかるかもしれません。
 (クライアントへの原因の説明など)
・プログラムは全ての環境(サーバー)での動作を保証するものではありません。
・改変等は自由ですが、自己責任でお願いします。
・有料版をご購入いただいた場合、初期不良を除き、ご使用後の返金には応じ兼ねます。
・有料版(著作権リンク削除含む)は1サイト(同一ドメイン)内であれば複製の上で複数利用可能です。
 2サイト目以降は都度サイトより購入申込みが必要になります。
 ※サブドメインはその性質上、別サイト(別ドメイン)とみなします。  

 ダウンロードいただいた時点で利用規約に同意したものとみなされます。

著作権表記リンク削除について

削除をご依頼されたい方は1サイトあたり2000円になります。
ただし、このページの【MailForm01】フリー版のメールフォームに限り、ご自身で削除できる方は削除いただいて構いません。その場合、料金お支払いの必要もございません。
また、このページのフリー版メールフォームについてのみですが、著作権リンク表示があるのはデフォルトの送信完了画面のみです。
自身で完了画面(サンクスページ)を用意し、ファイル内でURLを指定しリダイレクト設定すれば著作権リンク自体発生しません。これはmail.php内の設定箇所で設定可能です。
(これらはあくまでも【MailForm01】フリー版のみの特例です。)
自身で著作権表示を削除する自信が無い、またはカンパとして^^;お支払いいただける方は以下よりお申込みいただければと思います。

カスタマイズ、設置代行について

カスタマイズ(改造等)方法などのサポートは行っておりません。
カスタマイズや仕様変更、設置代行などは2,000円~の有料にて承ります。
フォームページとセットでの設置代行も承ります。※4,000円程度(項目数により変動有り)

カスタマイズ実績例

  • プルダウン、またはラジオボタンの選択状態によって、送信先を振り分けたい(有料版として販売しました
  • 確認画面と自動返信メールで特定の項目(ファイル内で指定可能にします)を表示しない(hidden要素等)
  • 確認画面に既存のサイトのデザインを反映させたい
  • 郵便番号を入力したら自動で住所が入力されるようにしたい(Javascriptにて実装します)
  • 確認画面や自動返信メールで複数の特定の項目を連結させたい(日付、郵便番号、電話番号や住所等)
    デフォルトの機能として追加しました。
  • 必須チェックをリアルタイムで行いたい(Javascriptにて確認画面に行くこと無くチェックします)
  • 複数の数字入力などを自動で計算させたい
  • 抽選を行いたい(プレゼントや各種応募など)
  • フォームのある項目の選択状態に応じて完了画面(メッセージ等)を切り替えたい
  • 送信内容をデータベースに保存して管理画面上で閲覧、及びCSVをダウンロードできるようにしたい(システム制作として承ります)

その他柔軟に対応しますので、どんなことでもまずはお気軽にご相談下さい。

チェックボックス使用時の注意点

※name属性の値を配列形式(用語は知らなくてもOKです)にする必要があります。(phpファイル内にも説明があります)
通常name属性は name="名前" とかにしますが、チェックボックスは同じname属性の値がフォーム内に複数存在することになるため、すべてname="名前[]"としてください。値の後ろにカッコを2つ追加します。これだけです。また同梱しているサンプルのcontact.htmlを見ていただければ分かると思います。

セキュリティ(脆弱性)対策について

当プログラムで行なっている対策をご紹介します。
一般的に考えうるリスクには対策を施しています。

クロスサイト・スクリプティング対策(XSS)

HTMLタグはhtmlspecialcharsにて適切にエスケープ(サニタイズ)していますので、ページ上でHTMLタグが有効になることはありません。
また念のため送信メールに対しても同じようにエスケープしています。メールはテキスト形式で送信していますので、本来は問題ありませんが、仮にhtml形式で受信したとしてもhtmlタグが有効になることはありません。

メールヘッダ改ざん対策

メールヘッダを改ざんされることによって大量送信の踏み台にされるなどのリスクがありますので、メールヘッダにはユーザー入力のメールアドレス以外は固定値としています。またこの入力されたメールアドレスも形式チェックを行っています。また@マークが1つで有るかどうかもチェックしますので、1つのメールアドレス以外が含まれることはありません。

外部サイトからのPOST送信対策
※CSRF(クロスサイトリクエストフォージェリ)対策

ワンタイムトークン(PHPセッション)によるスパム対策、CSRF対策、及び簡易版のリファラチェックを導入しています。 外部からの意図しない不正な送信などは受け付けません。

更新履歴

2024/05/24 改善アップデート(ver2.0.4)

メーラー上でのメール管理を便利にする機能として管理者宛メールの送信元(差出人)にユーザーが入力したメールアドレスを表示できる機能を追加。
この機能は配布版の標準ではOFFになっていますので必要に応じてONとしてください。
mail.phpの「$from_add = 1;」という箇所です。

「なりすまし」扱いによってメールが届かない問題を回避するため、2021/10/26のアップデートで管理者宛メールの送信元(差出人)メールアドレスを$fromで設定したメールアドレスとしましたが、
それによってメーラー上ではすべて同じ送信元(差出人)となるため使い勝手が悪くなるというデメリットがありました。

それを改善するため、送信元(差出人)にユーザーのメールアドレスを含めることでメーラー上での管理がしやすくなる機能です。

例 example@gmail.com <from@sample.jp> 

この場合、example@gmail.comがユーザーのメールアドレス、from@sample.jpが$fromで設定したメールアドレスです。
こうすることでメーラー上では「example@gmail.com」でも「from@sample.jp」でも検索ができます。
またこのようにしても送信元メールアドレスはあくまでも「from@sample.jp」となるため、「なりすまし」とはなりません。(ただし、すべての環境での保証はできません)

■古いバージョンのプログラムへの反映について
もし古いバージョンのプログラムへ導入されたい場合は以下手順で可能です。

mail.php内の以下を探してください。1箇所しかありません。

$header="From: $from\n";

↓以下に変更してください。そのままコピペOKです。


動作確認にて管理者宛のメールの送信元(差出人)が意図したとおりになっていることを確認してください。
上記のとおり、送信元(差出人)が以下のようになります。
入力したメールアドレス<$fromに設定しているメールアドレス>

2022/02/01 軽微なバグの修正アップデート(ver2.0.3)

-- 該当する製品名およびバージョン
ver2.0.0~ver2.0.2(2021/05/20~2022/02/01までにダウンロードいただいたメールフォームプログラム)

全角→半角変換機能を利用していて、かつtextareaの項目を設定し、改行を含む入力をされた場合、確認画面以降で改行タグが入り込んでしまう不具合を修正しました。
全角→半角変換機能はデフォルトではOFFであること、及び、通常は電話番号や郵便番号、メールアドレスなどの項目に設定することが多く、textareaを使ったコメント欄に使うことは極稀であることから、これまでバグの存在が発覚しておりませんでした。

2021/05/20の脆弱性対策のためのアップデート時に全角→半角変換処理に一部変更を加えたことにより発生した不具合でした。
ご報告いただいたS様にはこの場を借りて感謝申し上げます。

修正方法:
該当する方は極々少数だと思いますし、必ずしも修正する必要はありませんが、必要に応じて修正して下さい。

1,mail.php内の「//確認画面の入力内容出力用関数」を探して下さい。
(1箇所しかありませんのでファイル内検索ですぐに見つかります)

その関数内の以下の記述を探して下さい。
この記述を以下記述の上に移動して下さい。

2,mail.php内の「//全角→半角変換」の関数を探して下さい。
以下の記述を
$out = h(mb_convert_kana($out,'a',$encode));
以下に変更して下さい。
$out = mb_convert_kana($out,'a',$encode);
※h()を削除しただけです。
以上です。

2021/11/11 軽微な修正によるアップデート(ver2.0.2)

不要となった記述の削除と通常は影響のない程度のCSSの軽微な修正。

2021/10/26 改善アップデート(ver2.0.1)

管理者宛メールの送信元メールアドレスを固定のメールアドレスとする改修を実施。
これまで管理者宛メールの送信元メールアドレスはユーザーが入力したメールアドレスとしていましたが、
受信環境によっては迷惑メール(なりすまし)扱いされることがあるため、元々付いていた機能でもあるユーザー宛の自動返信メールの送信元メールアドレスを管理者宛のメールでも送信元としました。
返信先(reply)はユーザーのメールアドレスとなりますので返信作業には特に影響はありません。

2021/05/20 反射型クロスサイトスクリプティングの脆弱性発覚について(ver2.0.0)

JPCERT/CC 脆弱性コーディネーショングループ様よりご連絡をいただいた、ある特定の条件下で発生する脆弱性に対応するためソースコードの一部を修正しました。また既存ファイルの修正方法についてもこのページに掲載致しました。

実際には複数の条件が揃わなければ発生せず、また特定の機能をONにしている必要があることから、現在設置中のフォームが実際に問題となる可能性は低いと考えていますが、念のため以下手順にて修正いただきますようお願い致します。

尚、条件の1つとして「全角英数字→半角」に変換する機能をONにしていることが条件となりますのでOFFの場合は特に問題ありません。(配布版のデフォルトではOFFです)

設置サイト、及びそのサイトの運営者(管理者)、関係者等が直接被害を受けるようなものではありません。
尚、今現在実害の報告等はいただいておりません。

セキュリティについては十分に注意、検証しておりましたが、結果としてこのような事態となり、お手数、ご迷惑をおかけし大変申し訳ございませんでした。
今後このようなことが無いよう細心の注意を払って参る所存です。

-- 脆弱性に該当する製品名およびバージョン
PHP多機能メールフォームプログラムのmail.phpファイルの上部に記載の最終更新日が
2014年12月12日から2018年7月27日までのバージョン。(無料版、有料版とも対象)

-- 脆弱性の内容
悪意のある第三者が作成した罠ページへ誘導された場合に、特定のリンクをクリックさせることによって任意のスクリプトが実行される可能性。

-- 脆弱性への対応方法と適用方法
最新版をダウンロードいただき、既存のmail.phpを差し替えていただくか、
以下手順にて既存ファイル(mail.php)を修正して下さい。 1箇所のみです。

mail.phpの507行目付近の以下の箇所(バージョンなどによっては行数が異なります)
※ファイル内で1箇所しかありませんので間違うことはありません。
※「全角→半角変換」の関数内の記述です。

$out = mb_convert_kana($out,'a',$encode);

↓以下のように修正いただくか、そのままコピペください。

$out = h(mb_convert_kana($out,'a',$encode));


またはソースコードを修正されたくない場合は
以下の設定を確認していただき、「1」になっている場合は「0」にすることでもOKです。
※ただし、この機能はOFFになります。

//全角英数字→半角変換を行うかどうか。(する=1, しない=0)
$hankaku = 0;


お手数ですが、修正後は必ず送信テストを行っていただき、問題の無いことをご確認下さい。
問題が出た場合にはお気軽にお問い合わせよりご連絡下さい。

-- 謝辞
apple502j様並びに情報処理推進機構 IPA様、JPCERT/CC 脆弱性コーディネーショングループ様にはこの場を借りて感謝申し上げます。

2020/05/08 PHPのバージョンが最新の7.4の場合に特定の環境で「Deprecated」エラーが出る問題を修正しました。

PHPのバージョンが7.4以降の場合、get_magic_quotes_gpc()関数が非推奨となったため、環境によってはDeprecatedエラーが表示される場合があるためです。

旧バージョンをお使いの方はお手数おかけしますが、下記修正方法をご参照の上で修正してください。
※今現在はPHP7.4未満であっても先々を考慮し、出来る限り修正されることをお勧め致します。

【対象バージョン】
2020/05/08以前にダウンロードされた全バージョン。

【原因】
PHPのバージョンが7.4以降の場合、get_magic_quotes_gpc()関数が非推奨となったため、環境によってはDeprecatedエラーが表示される場合があります。

【修正方法】
修正方法は以下となります。

mail.phpをエディタソフトなどで開いて「get_magic_quotes_gpc()」の文字をファイル内検索して下さい。
フリー版の場合は2箇所、有料版の全機能搭載版の場合は4箇所あります。

あとはその行を1行まるっと削除するだけです。

または先頭にスラッシュ2つ「//」を付けてコメントアウトして下さい。
例 //if(get_magic_quotes_gpc()) ・・・・・

これでエラー表示が消えるはずですので確認して下さい。

get_magic_quotes_gpc()関数はmagic_quotes_gpcという設定がONかどうかチェックするためのものですが、 「magic_quotes_gpc」自体はPHP5.4で完全廃止されたため、本来は不要な記述ですが、古いバージョンでの利用も考慮し念の為に残しています。
ですので、PHP5以上であれば不要な機能なので削除して構わないのです。

2018/08/06 EUC-JP版の不具合修正
※EUC-JP版独自の問題であるため、文字コードがEUC-JP以外のプログラムは関係ありません)

主な変更点
アップデートによって機種依存文字の置換処理を実装しましたが、EUC-JP版のメールフォームの場合にその処理が原因(ミスマッチ)で特定の文字が文字化けするという現象が確認されましたので修正しました。
UTF-8以外の文字コードのメールフォームプログラムではこの機種依存文字の置換処理を無効化する必要がありました。 (Shift_JIS版は当初から無効化していました)

すでに配布版にも修正を実施しましたので、 2018年7月28日~8月6日までの期間にEUC-JP版をダウンロード頂いた方は、お手数おかけしますが、 今一度ダウンロードいただくか、またはmail.phpの置換処理の設定箇所で以下のように内容を空にして無効化して下さい。

//変換前の文字
$replaceStr['before'] = array();

//変換後の文字
$replaceStr['after'] = array();

文字コードがEUCの場合はUTF-8とは機種依存文字の扱いが異なるため、現実的に置換処理を実装すべきでなかったということでした。 今はEUC-JPの利用が少ないということもあり、検証が十分でなかったと反省しております。ご報告いただいたI様にはこの場を借りて感謝申し上げます。

2018/07/28 スパム対策とセキュリティの強化、及び機能追加のアップデート

主な変更点
※いずれもmail.phpで設定可能です。

1,ワンタイムトークン(PHPセッション)によるスパム対策、CSRF対策(デフォルトはON)
PHPのセッションを使ったスパム対策、CSRF対策であるワンタイムトークンを実装しました。
経験上、スパムに対して非常に有効です。(ただし、手口も随時変わるため将来的なことまでは分かりません)
※ただし、この機能を使う場合は送信確認画面の表示が必須です。(デフォルトではONになっています)
【重要】ガラケーは機種によってはクッキーが使えないためガラケーの利用も想定してる場合はOFFにして下さい(PC、スマホは問題ないです)

尚、セッションによるトークン機能はあくまでも裏で動作しているものであるため、フォームを使う側も管理する側も通常のフォームと何ら変わりありません。特に意識する機会もありません。(何らかの負担やデメリットが増えるものではありません)
そうなると本当に機能しているのか?と疑問に思うかもしれませんが、外部のサイトからmail.phpに送信してみていただくか、または完了ページへのリダイレクト機能をOFFにして、入力→確認→送信のあとにブラウザのF5キーで再送信してみると「ページ遷移エラー」と表示され、トークンが機能して送信できないことを確認できます。

2,自動返信メールの送信元メールアドレスを設定できるようにしました。
今までは管理者のメールアドレスがユーザー宛の自動返信メールの送信元に設定されていましたが、自動返信メールの送信元と受信するアドレスを分けたい場合も考慮し、追加しました。

3,-fオプションによるエンベロープFrom(Return-Path)の設定(デフォルトはOFF)
メール送信時にmail関数の第5引数に-fオプションによるエンベロープFrom(Return-Path)を設定できるようにしました。稀にサーバーによってはこの設定が必須の場合もある、また環境によってはこれを適切に設定したほうがスパム扱いされにくいなどの理由から追加しました。

ただ、これの良し悪しはケースバイケースでもあり、判断が難しいところです。Return-Pathに設定されるメールアドレスはmail.phpで設定した送信元メールアドレス($from)です。基本的にはこの送信元メールアドレス($from)のドメインが設置先サイトのドメインと同じ場合のみONとして下さい。でないとスパム扱いされる可能性が高まります。またサーバーのSendmail系の設定によっては逆にスパム扱いされる可能性が高まることもあるため、あくまでも必要に応じてONとして下さい。またONとした場合は十分に動作検証を行って下さい。 この件の詳細は以下ページもご参考下さい。

尚、これをONにすると、ユーザーが入力したメールアドレスへの自動返信メールで送信先が見つからなかった場合に管理者宛に「Mail Delivery System」から「Undelivered Mail Returned to Sender」というメールが届きます。 ※宛先不明で戻ってきたことを意味します。

4,機種依存文字の変換(常にON)
㈱や①などの機種依存文字はメール内で文字化け(?と表示)してしまうため、確認画面の表示の段階で置換処理を行うようにしました。置換する対象文字はmail.phpにて自由に設定できます。デフォルトではメジャーな機種依存文字をいくつか設定していますので必要に応じて自由に追加下さい。

5,レスポンシブ対応としました。
配布版のcontact.html及びmail.phpのhead部にレスポンシブ用のCSSを記述しています。
ただし、あくまでも必要最低限のCSSのみとしていますので、設置されるサイトに合わせて修正、または追加などを自由に行なって下さい。(もちろんデフォルトの記述を無視してもOKです)

以上です。
十分に検証を行った上でリリースしていますが、アップデート直後は環境などによっては未知のバグが無いとも限りません。もしお気づきの点などがありましたらお問い合わせより遠慮なくご報告いただければと思います。

2015/10/20

フォームでメールアドレスが入力されていない場合で、かつ自動返信メールをONにしている場合、サーバーによっては送信時にエラー表示されてしまう可能性があるものをメールアドレスが入力されている場合のみ送信するよう修正しました。(極々稀なケースですので基本的には問題ありません)

2014/12/12

主な変更点
1,電話番号や郵便番号、日時などを複数の入力箇所に分けている場合に任意の連結文字(ハイフンなど)で連結可能になりました。また、入力文字の末尾に任意の文字列(単位等)を追加できるようになりました。
今までは単純に入力文字だけが表示されるものでしたので、たとえば「人数」や「日時」入力箇所では数字が表示されるだけでしたが、入力文字の後ろに「人」や「月」、「日」などが追加可能となりました。
表示例 【人数】10人、【金額】10,000円、【日時】10月11日12時50分
(追加文字が「円」が含まれる場合でかつ半角数字のみの場合には自動で3桁ごとにカンマが付きます)

この機能はあくまでもオプションです。必要が無ければ使う必要はありませんし、特に意識する必要もありません。今までとおりの使用法で問題ありません。
こちらのマニュアルを以下に用意しましたので、必要に応じてご参照下さい。

2,入力された全角英数字を半角に変換できるオプションを追加しました。デフォルトはOFFになります。ファイル内の設定箇所のコメントを参考に必要に応じてご使用下さい。

2014/12/10

主な変更点
・必須項目に数字の「0」のみを入力した場合に未入力となってしまう不具合を修正しました。

2014/7/10

主な変更点
・PHP5.1以上の場合のみデフォルトのタイムゾーン設定を行うよう修正。
これはPHP5.1以上の場合で、サーバー側でデフォルトのタイムゾーンが設定されていない場合にエラーが表示されることを防止するためになります。(ほとんどのサーバーではデフォルトのタイムゾーンが設定されていますが、稀に設定されていないことがあるため)
「よくある質問」にて対処法を掲載しておりましたが、本体に実装しました。

・クロスサイトスクリプティングの脆弱性発覚に伴うコードの一部修正を行いました。
現在配布しているものはすでに修正済ですので、これからダウンロードされる方は問題ありません。
詳細については以下をご確認下さい。
クロスサイトスクリプティングの脆弱性対策について

2014/1/28

主な変更点
・プログラムの動作には特に影響はありませんでしたが、必須設定を設定した際に、
入力項目(type="text")、プルダウン(select)の場合には「○○が未入力です」、
チェックボックス(type="checkbox")、ラジオボタン(type="radio")の場合には「○○が未選択です」
と確認画面で表示されますが、この順番がフォーム内容の順番通りではなく、「○○が未入力です」がまとめて上段に表示され、「○○が未選択です」が下段にまとめて表示されていたものをフォーム内容の順番通りに表示されるよう修正しました。

2014/1/27

主な変更点
・昨日ダウンロードファイルを1つに統合としましたが、やはり文字コード毎にダウンロードファイルを分けました。
これは一部サーバーでphp.iniの設定「mbstring.encoding_translation」が「ON」になっている場合にこれを「OFF」にしないと現実的には運用が難しいということが発覚したためです。「ON」になってしまっているサーバーでの症状や対処法などは以下にまとめましたのでご参考下さい。
※ただデフォルトは「OFF」のため「ON」となっているサーバーはごくごく少数です。
http://www.php-factory.net/blog/?id=7976352e60aac7ec0b
・「確認画面を表示しない」と設定した場合に、管理者宛送信メール内の「問い合わせのページURL」の箇所が空欄になってしまうバグを修正しました。

2014/1/26

主な変更点
メンテンナンス性向上のため、ダウンロードファイルを1つとしました。1ファイルでShift-JIS、EUC-JP、UTF-8に対応可能としました。(デフォルトはUTF-8) やはり文字コード毎に分けました。
・メンテナンス性、作業性、コードの可読性向上のため、大部分を関数化するなどソースコードの大幅な修正を行いました。変数名も必要に応じて変更しています。
・メールアドレス入力欄を必須にしたくない場合で、「メールアドレスの形式チェック」をONにしていると必須扱いとなっていたものを入力された場合のみチェックするよう修正しました。

2013/6/19

主な変更点
・PHP5.4に対応しました。以前配布中のものはPHP5.3までしか対応しておりませんので、PHP5.4で設置予定の方は現在配布中の最新版をダウンロードください。
・自動返信メールで「○○様」と表示させたい場合に、以前は「name="名前"」とする必要がありましたが、name属性の値を指定できるよう変更しました。

2013/6/15

主な変更点
・Shift_JIS版で「表」、「申」、「ソ」などがname属性の値に含まれている場合、円マーク(¥)が付与される不具合を修正しました。サーバーのphp.iniの設定で「magic_quotes_gpc」が「On」になっている場合に発生します。SHift_JIS版の場合はその他の日本語でも同様の不具合が発生する可能性がありますのでご了承下さい。
※これはテスト時にすぐに分かるものなので、テスト時に問題が無ければ以降も問題ありません。(起こったり起こらなかったりということは基本的にありませんので)

・EUC-JP版を追加しました。

2013/4/19

主な変更点
・ご要望の多かったBcc設定を可能に。(デフォルトはOFF)
・自動返信メールの送信者欄に表示される名前を設定可能に(すべてのメーラーでの確認はしておりませんので、万が一お使いのメーラーで文字化け等が起きる場合には設定箇所を空(”)にしてください)
・スパム対策にリファラ(直前に見ていたページのURL)を取り、お問い合わせページとプログラムのドメインが違う場合には送信できないように設定が可能に。(デフォルトはOFF)
※ただし、これでスパムが完全に防げるわけではありませんのでご了承下さい。
・メールアドレスの形式チェックを導入しました。(デフォルトはON)
(メール入力欄のname属性の値が「Email」である必要があります)
※これらすべては配布中のmail.php内にて設定可能です。コメントを参考に設定下さい。

2012/11/25
主な変更点
tetsu様よりご指摘いただいた、「確認画面を表示しない」かつ「必須項目を設定する」と設定した場合、必須項目の確認をスルーしてしまうバグを修正しました。この場をお借りしてtetsu様に感謝申し上げます。

2012/10/28
主な変更点
・オリジナルの署名表記が可能に。(デフォルトは無し)
・確認画面にオリジナルのデザインを反映したい場合、反映しやすいようコードを変更(コメントを参考にHTMLの編集などが可能)※ただし、変更は自己責任で。
・確認画面でコメントの改行が反映されるようコードを修正。
・管理者宛のメールに「問い合わせのページURL」を追加。(問い合わせページのURLを表示)

2011/6/23
プログラムの配布を開始

PHPメールフォーム(無料版)

PHPメールフォーム(有料版)

新着情報・更新履歴CMS(無料版)

投票・アンケートシステム(無料版)

テロップCMS(無料版)

写真ギャラリーCMS(無料版)

営業日カレンダーCMS(無料版)

営業日カレンダーCMS(有料版)

カレンダー予約フォーム(無料版)

カレンダー予約フォーム(有料版)

リンク集ページCMS(無料版)

アクセスカウンター(無料版)

ダウンロードカウンター(無料版)

その他

メールフォームの各種カスタマイズならお任せ下さい
業務効率化が可能なPHPオリジナルCMS制作します

役立つかも?なもの

豆知識や役立ち事など

PHPについて

各種情報