PHP オープンソース

PHP 添付ファイルを送信できるメールフォームを作成しました。

2016/11/09

添付ファイルを送信できる、無料で自由に使えるメールフォームを作成しました。
ぜひお使いください。

サンプル

まずは「サンプル」からご覧ください。
添付ファイルはいくつでも送信することができます(phpini設定範囲内で)

ダウンロード

GitHubのDownloadZIPからどうぞ

github-download

必要なファイル・ディレクトリは下記になります。

├── Monaka
│   ├── class
│   │   ├── Confirmation.php
│   │   ├── Form.php
│   │   └── Send.php
│   ├── config.php
│   ├── confirmation.php
│   ├── css
│   │   ├── confirmation.css
│   │   ├── html5reset-1.6.1.css
│   │   └── ini.css
│   ├── functions.php
│   └── send.php
├── css
│   ├── html5reset-1.6.1.css
│   ├── ini.css
│   └── mailform.css
└── mailform.php

更新履歴については こちら

使い方

各設定 - Monaka/config.php

■$adminMail
管理者(送信先)のメールアドレスを記述します。
複数に送信する場合は「,」で区切ります。

// 送信先メールアドレス
$adminMail = "hoge@example.com,hogehoge@example.com";

メール送信者にリターンメールを送信しますが、その際に$adminMailの1つ目に設定されているメールアドレスがリターンメールの送信元としてメール送信者に知らされることになります。メール送信者に知られたくないメールアドレスは2つ目以降に設定してください。


■$adminName
管理者の名前を記述します。

// 送信者名
$adminName = "YusukeSasaki";

■$returnUrl
送信後の戻るボタンで移動するURLを記述します。

// 送信後に戻るURL
$returnUrl = "http://web-dev.xyz/";

■$completionMessage
送信直後に表示されるメッセージを記述します。

$completionMessage = <<<EOD
送信が完了しました。
ありがとうございます。
EOD
;

■$returnMailTitle
返信メールのタイトルを記述します。

$returnMailTitle = "お問い合わせを受け付けました";

■$returnMailHeader
返信メール上部に表示されるメッセージを記述します。
{$adminArray[0]}は、$adminMailに設定している1つ目のメールアドレスが表示されます。

$returnMailHeader = <<<EOD
お問い合わせフォームよりお問い合わせをいただきありがとうございます。

お問い合わせ内容を確認の上、ご返信先メールアドレスへ回答いたしますので、
しばらくお待ちくださいますようお願いいたします。
なお、お問い合わせから48時間経過しましても回答がない場合、
サポートにてお問い合わせが受信できていない可能性がございます。
大変お手数ですが、「{$adminArray[0]}」まで
再度お問い合わせくださいますようお願いいたします。 
EOD
;

■$returnMailFooter
返信メール下部に表示されるメッセージを記述します。

$returnMailFooter = <<<EOD
ありがとうございます。
EOD
;

■$ext_denied
拡張子を制限する場合は1、しない場合は0

$ext_denied = 1;

■$ext_allow1〜
許可する拡張子を設定(増減可能です)
($ext_deniedが1の場合のみ有効です)

$ext_allow1 = "jpg";
$ext_allow2 = "jpeg";
$ext_allow3 = "gif";
$ext_allow4 = "pdf";

■$EXT_ALLOWS
$ext_allow1〜 を全てカンマ区切りで()の中に記述してください。
($ext_deniedが1の場合のみ有効です)

$EXT_ALLOWS = array($ext_allow1, $ext_allow2, $ext_allow3, $ext_allow4);

■$maxmemory
アップロード容量制限をする場合は1、しない場合は0
(しない場合でもphpiniの設定値を超える容量は送信できません)

$maxmemory = 1;

■$max
アップロードの容量制限をKBで記述してください。
($maxmemoryが1の場合のみ有効です。phpiniの設定値を超える場合はエラーになります)

$max = 3000;

フォーム画面 - mailform.php

フォームは既存のデザインに入れ込む形になるとおもいますので、別ファイルを用意していただき、下記内容に沿って記述してください。拡張子がhtmlでも使用できます。

html場合

■formタグ

<form action="./Monaka/confirmation.php" method="post" enctype="multipart/form-data">
・
・
・
</form>

Monakaディレクトリを複製してメールフォームを複数設置することも可能です。
その場合は、./Monaka/… の部分を、 ./変更したディレクトリ名/… にしてください。

(例)Monakaを複製してMonaka2を作成した場合

<form action="./Monaka2/confirmation.php" method="post" enctype="multipart/form-data">
・
・
・
</form>

■フォーム部品
各フォーム部品(input、select、radio等)のnameには、「項目名[value]」を入力してください。

<text>

<input type="text" name="住所[value]">

<select>

<select name="折り返しの連絡方法[value]">
  <option value="">選択してください</option>
  <option value="メール">メール</option>
  <option value="電話">電話</option>
</select>

<radio>

<label><input type="radio" name="性別[value]" value="男" checked> 男</label><br>
<label><input type="radio" name="性別[value]" value="女" > 女</label><br>

<textarea>

<textarea name="お問い合わせ内容[value]"></textarea>

■必須項目等の指定
フォーム部品の前に下記のhiddenを記述することで必須項目等の指定をすることができます。

<input type="hidden" name="項目名[params]" value="XXX">

XXXの部分に下記項目を指定できます。複数記述する場合はカンマ「,」で区切ります。

名前 このメールフォームには必ず[params]のvalueに「名前」が必要です。
メール このメールフォームには必ず[params]のvalueに「メール」が必要です。
必須 何も入力されていない場合、エラーになります。
(名前 と メール は自動で必須になるので、必須 を書く必要はありません。 )
再入力 [params]メールと一致しない場合エラーになります。
電話番号 電話番号の形式ではない場合エラーになります。
郵便番号 郵便番号の形式ではない場合エラーになります。

※このフォームには必ず[params]のvalueに「名前」と「メール」が必要です。ない場合は確認画面でエラーになります。「名前」と「メールアドレス」は必須項目扱いになります。

<input type="hidden" name="お名前[params]" value="名前">
<input type="text" name="お名前[value]">
<input type="hidden" name="メールアドレス[params]" value="メール">
<input type="text" name="メールアドレス[value]">

■checkbox
checkboxは[value]のあとに[]を記述します。また、何もチェックを入れずにsubmitをクリックした場合、確認画面で受け取れない(表示されない)ため、checkboxより前に上記のhiddenを記述します。valueは空でも大丈夫です。そうすることで何もチェックが入っていなくても確認画面で確認することができます。

<input type="hidden" name="当サイトを知ったきっかけ[params]">
<label><input type="checkbox" name="当サイトを知ったきっかけ[value][]" value="検索"> 検索</label>
<label><input type="checkbox" name="当サイトを知ったきっかけ[value][]" value="ブログ"> ブログ</label>
<label><input type="checkbox" name="当サイトを知ったきっかけ[value][]" value="その他"> その他</label>

もちろん下記のようにvalueに必須等を記述することもできます

<input type="hidden" name="当サイトを知ったきっかけ[params]" value="必須">
<label><input type="checkbox" name="当サイトを知ったきっかけ[value][]" value="検索"> 検索</label>
<label><input type="checkbox" name="当サイトを知ったきっかけ[value][]" value="ブログ"> ブログ</label>
<label><input type="checkbox" name="当サイトを知ったきっかけ[value][]" value="その他"> その他</label>

■添付ファイル
ファイルを添付する場合は下記のように記述します。
nameは何でもよく、[value]や[params]は必要ありません。

<input type="file" name="添付ファイル1"><br>
<input type="file" name="添付ファイル2"><br>
<input type="file" name="添付ファイル3">

■送信ボタン
submit はご自由に。次の画面が確認画面なので「確認」がいいかと。

<input type="submit" value="確認">

phpの場合

■外部ファイル読み込み・インスタンス作成
ファイルの先頭に記述してください。

<?php
require_once(__DIR__ . '/Monaka/config.php');
require_once(__DIR__ . '/Monaka/class/Form.php');
$form = new Form();
?>

■formタグ
$form->end() の中に submit(確認ボタン)も含まれています。

<?php $form->create(); ?>
・
・
・
<?php $form->end(); ?>

Monakaディレクトリを複製してメールフォームを複数設置することも可能です。
その場合は、$form->create(); の部分を、 $form->create("変更したディレクトリ名"); にしてください。

(例)Monakaを複製してMonaka2を作成した場合

<?php $form->create("Monaka2"); ?>
・
・
・
<?php $form->end(); ?>

また、submitはデフォルトでは「確認」になっていますが、 $form->end(); を $form->end("確認する"); のようにすることで変更可能です。

(例)submitを「確認する」に変更する場合

<?php $form->create(); ?>
・
・
・
<?php $form->end("確認する"); ?>

■名前(inputName)とメール(inputMail)が必須です。
ない場合は確認画面でエラーになりますので気をつけて下さい。
()の中に項目名を記述します。

<?php $form->inputName("お名前"); ?>

<?php $form->inputMail("メールアドレス"); ?>

■text
()の中に項目名を記述します。

<?php $form->inputText("住所"); ?>

■select
変数paramsにoptionの値を配列で入れます。
noValueを記述することでその選択項目は無効(空)になります。
$form->selectの()に項目名と$paramsを記述します。

<?php
  $params = array(
    "選択してください" => "noValue",
    "メール",
    "電話",
  );
  $form->select("折り返しの連絡方法", $params);
?>

■radio
変数paramsにradioの値を配列で入れます。
textを記述することでそのradio項目のあとにtextの入力項目が表示されます。
$form->inputRadioの()に項目名と$paramsを記述します。
$form->inputRadioBRと記述することで各項目が改行されます。

<?php
  $params = array(
    "男",
    "女",
    "その他" => "text",
   );
   $form->inputRadioBR("性別", $params);
?>

■checkbox
変数paramsにcheckboxの値を配列で入れます。
textを記述することでそのcheckbox項目のあとにtextの入力項目が表示されます。
$form->inputCheckboxの()に項目名と$paramsを記述します。
$form->inputCheckboxBRと記述することで各項目が改行されます。

<?php
  $params = array(
    "検索",
    "ブログ",
    "その他" => "text",
  );
  $form->inputCheckboxBR("当サイトを知ったきっかけ", $params);
?>

■textarea
()の中に項目名を記述します。

<?php $form->textarea("お問い合わせ内容"); ?>

■メールアドレス確認
inputMailと一致しない場合は確認画面でエラーになります。
()の中に項目名を記述します。

<?php $form->inputMailCheck("メールアドレス確認"); ?>

■電話番号
電話番号の形式ではない場合は確認画面でエラーになります。
()の中に項目名を記述します。

<?php $form->inputTel("電話番号"); ?>

■郵便番号
郵便番号の形式ではない場合は確認画面でエラーになります。
()の中に項目名を記述します。

<?php $form->inputZip("郵便番号"); ?>

■添付ファイル
ファイルを添付する場合は下記のように記述します。

<?php $form->inputFile("添付ファイル1"); ?>
<?php $form->inputFile("添付ファイル2"); ?>
<?php $form->inputFile("添付ファイル3"); ?>

■必須項目
各()の最後に必須を記述します。

<?php $form->inputText("住所", "必須"); ?>

<?php
  $params = array(
    "検索",
    "ブログ",
    "その他" => "text",
  );
  $form->inputCheckboxBR("当サイトを知ったきっかけ", $params, "必須");
?>

<?php $form->inputTel("電話番号", "必須"); ?>

確認・送信完了画面のデザインについて

確認・送信完了画面はdl,dt,ddで構成されています。
Monaka/css/confirmation.cssを編集してサイトのテイストに合わせていただければとおもいます。

最後に

ライセンスはMITとさせていただきました。
MITは要約すると、

このソフトウェアを誰でも無償で無制限に扱って良い。ただし、著作権表示および本許諾表示をソフトウェアのすべての複製または重要な部分に記載しなければならない。
作者または著作権者は、ソフトウェアに関してなんら責任を負わない。

となっております。(MIT License - ウィキペディア)
不明点・使いづらい点・バグ等ご連絡いただけると助かります。

-PHP, オープンソース