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

  • このエントリーをはてなブックマークに追加

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

【2017/06/14】
必須項目に0を入力した場合に必須エラーになる不具合を修正(v2.0.4)

サンプル

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

ダウンロード

ダウンロードはこちらから

必要なファイル・ディレクトリは下記になります。
(testsフォルダやwercker.ymlは不要です)

├── Monaka
│   ├── config
│   │   ├── autoload.php
│   │   ├── config-sample.php
│   ├── confirmation.php
│   ├── css
│   │   ├── common.css
│   │   ├── confirmation.css
│   │   ├── mailform.css
│   │   └── reset.css
│   ├── lib
│   │   ├── Confirmation.php
│   │   ├── Form.php
│   │   ├── Send.php
│   │   └── functions.php
│   └── send.php
└── mailform.php

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

使い方

各設定 – Monaka/config/config.php

Monaka/config/config-sample.php をリネームして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]は必要ありません。

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

添付ファイルを必須にしたい場合は、下記のようにhiddenを追加してください
(下記例では添付ファイル1が必須になります)

<input type="hidden" name="添付ファイル1[params]" value="必須">
<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/config.php');
  $form = new Monaka\Form();
?>

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

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

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

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

<?php
  require_once(__DIR__ . '/Monaka2/config/config.php');
  $form = new Monaka\Form();
?>
・
・
・
<?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("電話番号", "必須"); ?>

<?php $form->inputFile("添付ファイル1", "必須"); ?>

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

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

最後に

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

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

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

  • このエントリーをはてなブックマークに追加

SNSでもご購読できます。

コメント

  1. エイト より:

    素敵なプログラムをありがとう
    検証したのですが、画像で不具合が
    confirmation.phpの95行目
    if (strpos(“jpg,jpeg,git”, $value[“ext”]) !== false) {
    上記でstrpos関数に指定しいる拡張子が”git”→”gif”にしたほうがよいのでは
    あと”png”はあえて外しているのでしょうか?

    1. Yusuke(管理人) より:

      コメントありがとうございます。
      ご指摘の通り、記述に誤りがありましたので、gif、pngともに修正いたしました。

      また何かありましたらコメントいただけますと幸いです。

  2. はぴたい より:

    素晴らしいプログラムありがとうございます。
    大切に使わせていただきます。

    少し気になったのですが、写真の送信ですがgalaxyなどのAndroid端末からは正常に送信できるのですが、iphoneやipadからはエラーが出て送信できません。
    iphoneはChromeからでもSafariからでもエラーが出ます。

    よろしければ、時間のあるときに見て頂けますと助かります。

    よろしくお願いいたします。

    1. Yusuke(管理人) より:

      コメントありがとうございます。
      iPhoneやiPadの一部モデルにて不具合が出ておりましたので、修正いたしました。最新バージョンの1.2.2をお試しいただけますでしょうか。また、改善されたかどうかをお知らせいただけますと助かります。

      ありがとうございます。

      1. はぴたい より:

        修正ありがとうございます。

        iphone ipad ともに送信できるようになりました!
        助かりました。

        大切に使わせていただきます。

        1. Yusuke(管理人) より:

          ご連絡ありがとうございます。
          無事送信できたとのことで安心しました。

          今後ともよろしくお願いします。

  3. みみかき より:

    お世話になります
    小さな店の自前のホームページを自分で作っていて
    そこで使わせていただこうと思っています。ありがとうございます。
    ところで、スマホ(iphone)から送信すると、送信出来るのですが
    送信完了画面がでず、エラーになってしまいます。
    なにか、こころあたりがございましたら、ご教示ください。

    1. Yusuke(管理人) より:

      コメントありがとうございます。
      iPhoneやiPadの一部モデルにて不具合が出ておりましたので、修正いたしました。最新バージョンの1.2.2をお試しいただけますでしょうか。また、改善されたかどうかをお知らせいただけますと助かります。

      ありがとうございます。

  4. なかなか より:

    お世話になっております。
    写真貼付が出来るメールフォームを探していたところ、
    このサイトに辿り着きました。
    シンプルなデザインが素敵で、とても気に入りました^^
    さっそく使わせていただきたいと思います。

    ところで、大変恐縮なのですが、二点ほど質問させて
    いただいても宜しいでしょうか?

    (1)添付写真の最大容量を$max = 51200;(5M)
    にしたのですが、テスト送信で1.5M程度の写真を送信しようと
    試みたところ、確認の画面で「送信ボタン」が表示されず、
    送信することができません。
    (※ちなみに、200kb程度の写真だと表示されます。)
    サーバーのpost_max_sizeの設定も変え、8Mまでは大丈夫にしました。
    もし可能でしたら、対処方法を教えていただければ幸いです。m(_ _)m

    (2)メール送信後の自動返信メールにて、
    タイトルとメール冒頭の「お問い合わせを受け付けました」
    という表示を別のテキストに変更することは可能でしょうか?

    こちらも、もし宜しければ教えていただければ助かります。

    お忙しい中恐縮ですが、宜しくお願いいたします。

    1. Yusuke(管理人) より:

      コメントありがとうございます。

      (1)についてですが、サーバーのupload_max_filesizeが1.5MBを下回ってはいないでしょうか。
      その場合でもエラー表示になる予定でしたが、うまくいっていないようなので後日検証・改善を行いたいと思います。
      また、1.5MBを上回っているのであれば、別の原因が考えられますのでお知らせください。再度調査いたします。

      (2)についてですが、現状では、「/Monaka/class/Send.php」の137行目周辺にあるメッセージを変更していただく形になります。
      こちらも今後自由に設定できるように改善したいと思います。貴重なご意見をありがとうございます。

  5. なかなか より:

    Yusuke(管理人)様

    さっそくご回答いただき、ありがとうございます。

    ⑵については、無事解決いたしました^^ありがとうございます。

    ⑴についてなのですが、upload_max_filesizeを調べたところ、2MBでした。
    設定を変えて20Mにしたのですがうまくいかず…
    もし可能でしたら、ご対応、ご教授いただければ幸いですm(_ _)m

    1. Yusuke(管理人) より:

      (1)について調査を行っております。もう少々お待ち下さい。

    2. Yusuke(管理人) より:

      なかなか様、Monaka/ の中に適当な名前でPHPファイルを作っていただき、
      下記を実行して結果をお知らせいただけないでしょうか。

      var_dump(ini_get(‘upload_max_filesize’)) . PHP_EOL;
      var_dump(ini_get(‘post_max_size’)) . PHP_EOL;
      var_dump(ini_get(‘memory_limit’)) . PHP_EOL;

      1. なかなか より:

        Yusuke(管理人)様。

        先日、最新バージョンにて再度トライしてみましたところ、
        無事に画像アップをすることができました。
        もしかしたら私が余計な所ををいじって
        しまっていたのかもしれません。m(_ _)m

        お手を煩わせてしまい、申し訳ありません。
        ご丁寧にありがとうございました。m(_ _)m

        1. Yusuke(管理人) より:

          無事アップロードできたようで、安心しました。

          また何かありましたらお知らせ下さい。
          ご利用ありがとうございます。

  6. yukipodo より:

    丁度探しておりました。すばらしいですね。

    拡張子制限ONの状態で拡張子以外のファイルを添付してみたところ
    確認ページでの表示が「下記内容で送信してよろしいですか?」で「戻る」ボタン。
    意味は分かりますが、なんか変な感じがしました。

    特に問題ではないのでバージョンアップの際に気にかけて頂ければと思います。

    1. Yusuke(管理人) より:

      コメントありがとうございます。ご指摘の通り、おかしいですね。
      内容に誤りがある等の表示に変更したいと思います。

      また、拡張子以外のファイルを選択した場合、拡張子が許可されていない旨のエラーを表示するようにしていたのですが、1.2.2にした時に表示されなくなってしまったようです。おかげで気付くことができました。

      修正完了後、再度このコメント欄に返信させていただきます。
      ありがとうございます。

    2. Yusuke(管理人) より:

      yukipodo様

      ご指定いただいた、エラーが発生している場合の確認画面のメッセージを変更いたしました。よろしければ最新バージョンの1.2.3をお試しいただけますでしょうか。

      また何かございましたらコメントいただけますと幸いです。
      ご利用ありがとうございます。

      1. yukipodo より:

        早速の対応ありがとうございました。
        新しいバージョン、ダウンロードしました。

  7. ダリル より:

    Yusuke様
    添付ファイル可能なフォームを探していました。素敵なプログラムありがとうございます。

    複数のサーバーで試したのですが、某ホスティングサーバーでSendmailのエラーが出てメール送信されませんでした。
    sendmail: unexpected response 501 to RCPT TO command
    501はコマンドのパラメータか引数のエラーという感じのようですが、他のサーバーだと問題なく動いているため、固有の問題かもしれません…
    改善箇所などお分かりになりましたら、アドバイス頂ければ幸いです。
    よろしくお願い致します。

  8. ダリル より:

    Yusuke様
    追伸です。サーバーのPHPバージョンが5.2.14でした。Monakaは5.3以上との事ですのでこれが原因かもしれないですね…
    バージョンが低いままのサーバーというのもどうかと思いますが、クライアントの指定なのでやむを得ず。他のプログラムを使ってみます。
    お騒がせしました。ありがとうございました。

    1. Yusuke(管理人) より:

      ダリル様

      原因を調べてみましたが特定することが出来ませんでした。
      PHPのバージョンもしくはサーバー固有の問題かと思われます。

      お力になれず申し訳ありません。

  9. chapp より:

    はじめまして。ここ数日、このようなメールフォームを探していました。
    各所の説明も親切丁寧で、とても好感が持てました。

    ところで、早速とばかり設定ファイルとなる、config.phpを説明の通り進めてみましたが(その他は一切触っていない)、以下の箇所が正常に機能していません。(PHPのバージョンは、5.3.29)

    1.件名に一部の文字が文字化け(俱という時)
    2.送信元が不明。
    3.メール本文にヘッダー情報が記載されている。
    4.添付ファイルがない。

    このような状況なのですが、config.php以外にも設定をすべきところがあるのでしょうか?
    アドバイスのほど頂戴できれば幸いです。
    よろしくお願い申し上げます。

    1. Yusuke(管理人) より:

      chapp様

      ご連絡ありがとうございます。
      config.php以外のファイルを扱う必要はありません。
      こちらで確認したところ1~4の現象は確認できませんでした…。
      ・もう一度、config.phpの設定を見直していただけますでしょうか。
      ・レンタルサーバーをお使いでしたら、どちらのサーバー(プラン)をお使いか教えていただけますでしょうか。
      ・「http://web-dev.xyz/oss-sample/Monaka-1.2.3-tmp/mailform.php」 からconfig.phpをお送り頂ければ確認させていただきます。

      ご確認よろしくお願いいたします。

    2. Yusuke(管理人) より:

      chapp様

      メールにてconfig.phpをお送りいただきありがとうございました。
      確認したところ、特に問題はないようです。

      1 の 「俱」という文字ですが、こちらは機種依存文字になりますので当メールフォームからは送信することが出来ません。「?」にならないようにする対策としては「俱」をPHPで「倶」に変換することが考えられますが、config.phpの件名に設定するのであれば、初めから「倶」を使っていただく事と変わりません。
      全ての機種依存文字に対応することは難しいため、申し訳ありませんが「俱」を「倶」に変換するためのバージョンアップを行う予定はございません。

      2~4に関しても、現状では問題を特定することが困難です。
      考えられる原因を1つずつ(サーバー・ドメイン・IP等のどこが原因になっているのか)検証していく必要がありますが、その時間を取ることが難しいです。
      (もし、対象のドメインをお知らせいただければドメインが原因かどうかは調査できるかもしれません)

      解決に至らず大変心苦しいのですが、添付ファイルが送信できるメールフォームは他の方も制作されておりますので、そちらのご利用もご検討ください。

      1. chapp より:

        Yusuke様

        お世話になっております。早速のご対応ありがとうございます。

        今回の件、残念ではありますが、お忙しい中、お時間を割いた上でのご対応、感謝しています。本当にありがとうございました。

        1. Yusuke(管理人) より:

          chapp様

          引き続き調査を行っていたところ、ある条件下でメールヘッダーの改行コードがCRLFの場合にchapp様が言われていた現象が起きることがわかりました。改行コードをLFに変更した最新バージョン1.2.5で改善できているのではないかと思われます。お時間も経っていますのでもう不要かもしれませんが、もしよろしければご検証ください。

          ありがとうございます。

  10. isshy より:

    お世話になります、ありがたく使わせていただいております。
    バグがありましたのでお知らせいたします。

    テキストエリア(サンプルだとお問い合わせ内容)に日本語文字を494文字以上を連続で書き込むとそれ以降の文字が文字化けます。
    途中で改行を入れれば文字化けはしませんが、さすがに不便ですので改善していただけますと幸いでございます。

    1. isshy より:

      すみません、追記です。
      文字化けるのは送信したメール内になります。
      確認画面では文字化けは発生していません。

      1. Yusuke(管理人) より:

        isshy様

        バグ報告ありがとうございます。
        調査して改善したいと思います。

      2. Yusuke(管理人) より:

        isshy様

        文字化けに関して調査したところ、「Emailにおいて1行(改行コードまで)の長さは、半角998文字を越えてはいけない」とのことで、改善することが出来ませんでした。

        【参考】
        http://www.magical-remix.co.jp/magicalog/archives/3006

        但し、文字化けしたメールが送信されてしまっては問題があるため、改行せずに半角998文字を越えてしまう場合にエラーメッセージを表示するように修正いたしました。よろしければ最新バージョンの1.2.5をご利用ください。

        また何かございましたらコメントいただけますと幸いです。
        ご利用ありがとうございます。

  11. chapp より:

    お世話になっております。先日、ファイルを確認していただいた者です。

    2.送信元が不明。
    4.添付ファイルがない。(正常に認識されていないようです)

    以上の内容にて質問させていただいておりましたが、優れたプログラムなので、ぜひ利用したいと色々と試していて、現在わかったことは、

    上記不具合はメールソフトである、Windows Live Mailで起きているようです。当初メールサーバーやドメインをご指摘いただいておりましたが、サーバー上では問題なく、それを受け取るメールソフト側で起きている不具合のようです。

    1. Yusuke(管理人) より:

      chapp様

      コメントありがとうございます。
      以前のコメントに返信する形で、最新バージョンの1.2.5をお試しいただきたい旨コメントしておりましたが、お試しいただいて尚不具合が発生している状態でしょうか。

      引き続き調査を行っていたところ、ある条件下でメールヘッダーの改行コードがCRLFの場合にchapp様が言われていた現象が起きることがわかりました。改行コードをLFに変更した最新バージョン1.2.5で改善できているのではないかと思われます。お時間も経っていますのでもう不要かもしれませんが、もしよろしければご検証ください。

  12. chapp より:

    Yusuke様

    お世話になっております。毎度ご丁寧なお返事ありがとうございます。

    新しいバージョンの公開、ありがとうございます!
    ところで、早速とばかり試させていただきましたが、私の環境下では、送信した者へのThanksメールが「送信元が不明」の状態になっているようです。

    素晴らしいプログラムを使いたい者としてのご連絡です。
    ご確認いただければ幸いです。

    1. Yusuke(管理人) より:

      chapp様

      まず前提として最新バージョンにて
      3.メール本文にヘッダー情報が記載されている。
      4.添付ファイルがない。
      こちらの2点は解決したということでよろしいでしょうか。

      Thanksメールが「送信元が不明」になってしまうとのことですが、独自ドメインを設定されていますでしょうか。Gmail等でも同じことが起きますでしょうか。
      こちらで複数の独自ドメインやGmailにて確認を行いましたが「送信元が不明」にはなりませんでした。もしGmailや他のドメインで現象が起きないようでしたらお使いのドメインに原因がある可能性がありますので、SPFの設定を行ってはいかがでしょうか。

      【参考(SPFについて)】
      https://sendgrid.kke.co.jp/blog/?p=3509

      【参考(SPFチェックツール)】
      http://mxtoolbox.com/spf.aspx

  13. chapp より:

    Yusuke様

    こんにちは。新しいバージョンを導入しての今起きている(当方での)不具合は、送信した者へ自動返信するThanksメールをwindows live mailで受け取ると、

    ・送信者名が不明
    ・件名が短い(入力した件名が途中で省略されている)

    といったことが起きています。

  14. chapp より:

    Yusuke様

    お世話になっております。度々の質問失礼いたします。
    この度公開されているメールフォームですが、カスタマイズして利用したいと考えているのですが、2点ほど質問させてください。

    1.メールにファイルを添付した際、メールフォームを設置しているサーバー上に、そのまま保存したいと考えているのですが、その手順等ご教示いただくことは可能でしょうか?

    2.この度のサンプルでは、「名前」、「メールアドレス」、「電話番号」など多くの項目がありますが、「名前」、「メールアドレス」、「添付ファイル」、「お問い合わせ内容」のみとし、必須項目はメールアドレスのみをと考えていますが、カスタマイズに向けて、修正すべきファイル、および注意点などご教示いただくことは可能でしょうか?
    私自身、フォームの記述は
    入力側が、
    <input type=”text” value=”” name=”test”>

    受取側が
    $test = $_POST[“test”];

    といったような形で記述しているので・・・アドバイス頂けると幸いです。
    お手数おかけし恐縮ですが、よろしくお願い申し上げます。

    1. Yusuke(管理人) より:

      返事が遅くなり申し訳ありません。
      1については、こちらのコメントで簡単に説明できる内容ではなさそうです。そのうち対応版を作ってみたいと思います。
      2についてですが、サンプルの「mailform.php」にあたるファイルを、必要な項目のみに変更していただければ可能かと思いますができないでしょうか。名前とメールアドレスは必要ですが、それ以外は自由に設定できるとおもうのですが。

  15. おぎの より:

    お世話になっております。
    とても使い勝手の良いフォームで感謝しております。

    いくつか質問がございます。
    (使用しているバージョンは1.2.5です)
    ①IEから問い合わせした時の送信者(問い合わせ者)に届くメールの
    上部にヘッダーの表記が入ってしまいます。
    Chromeからの送った場合はありませんでした。

    ②同じく送信者(問い合わせ者)に届くメールが
    全文文字化けしてしまっている、ということがありました。
    お客様からのご指摘だったので環境はIEかと思います。
    使用メールソフトは分かり次第お知らせいたします。
    こちらもChromeのGmailでは確認出来ない事象でした。

    なにか原因があって、こちらで改善できるようでしたら
    ご教示いただけますと幸いです。
    お忙しいとは存じますが、よろしくお願い致します。

    1. おぎの より:

      ②について追記です。
      使用しているメールソフトは、Outlookでした・

      1. Yusuke(管理人) より:

        返事が遅くなり申し訳ありません。
        まだこちらで不具合の再現ができておりませんので、確認でき次第対応したいと思います。情報ありがとうございます。

      2. Yusuke(管理人) より:

        おぎの様
        不具合が起きる可能性がある箇所を修正いたしました。
        おそらくメールタイトル部分の改行コードの問題ではないかと思われます。
        (こちらで不具合が確認できませんでしたので確実ではありませんが…)
        最新バージョンの1.2.8をお試しいただけますでしょうか。

  16. しまむら より:

    Yusuke様
    メールに画像を添付する方法を調べている時にこのサイトを見つけました。

    フォームを使っていて気づいたのですが、
    再入力のメールアドレスを間違えた後、正しく修正して確認ボタンを押すと、
    間違えたメールアドレスが表示されてしまいます(ただし送信は行えます)。

    class/Confirmation.phpの
    // メール再入力チェック
    if (strpos($values[“params”], “再入力”) !== false) {
    if ($this->requiredItem[“mailaddress”] !== $values[“value”]) {
    $this->err[$key] = “メールアドレスが一致しません。”;
    } else {
    continue;
    }
    }

    // メール再入力チェック
    if (strpos($values[“params”], “再入力”) !== false) {
    if ($this->requiredItem[“mailaddress”] !== $values[“value”]) {
    $this->err[$key] = “メールアドレスが一致しません。”;
    } else {
    $_SESSION[“submitContent”][$key] = ”;
    continue;
    }
    }
    のように変更したほうがいいと思われます。
    フォームの作り方、画像添付の方法等とても参考になりました。
    ありがとうございます。

    1. Yusuke(管理人) より:

      返事が遅くなり申し訳ありません。
      不具合報告ありがとうございます。修正したいと思います。

  17. oni より:

    Yusuke(管理人) 様

    こんにちは、はじめまして。
    PHPについてのご質問ですがよろしいでしょうか。

    7月3日の「みみかき」さんの投稿に
    iPhoneからの送信不具合が報告されています。
    スマホから送信すると送信完了画面がでず、
    エラーになるという現象です。

    その後、改善されてますが、プログラムのどこに手を加えられたか
    よろしければご教授いただけませんでしょうか?
    お願いいたします!

    1. Yusuke(管理人) より:

      返事が遅くなり申し訳ありません。
      iPhoneからの送信不具合ですが、確認画面にて添付ファイルを「base64エンコード」して再度input(hidden)に入れ直していたのですが、文字列が長くなりすぎて古いバージョンのiOSでエラーが発生していたという内容になります。対応としては、inputに入れずにSESSIONで保持するように変更した形になります。

      伝わりましたでしょうか…?

  18. 細谷 より:

    初めまして。
    フォームについて探していたらたどり着き、非常に使いやすいと思い使っています。

    1点だけ気になる所があるのですが、
    問合せフォームの項目をhtmlの部分で編集して、各項目入力後確認を押した確認ページなのですが、確認項目が問合せフォームの項目以上にあり、たぶんダウンロードした時の項目が反映されているようです。
    こちらの項目を修正する方法はありませんでしょうか?

    1. Yusuke(管理人) より:

      返事が遅くなり申し訳ありません。
      よければhtmlファイルをお送りいただければ確認できるかと思います。
      サンプルのメールフォームからお送りいただけますか?

  19. Ng より:

    お世話になっております。すてきなメールフォームありがとうございます。

    動作テストのため、自分で自分宛にフォームを入力して送信したところ、
    管理者と問い合わせ側のメールアドレスと同一だったためか、
    差出人が空の「【】 お問い合わせを受け付けました。」メールのみが届き、
    「○○様よりメールが届きました。」メールが届きませんでした。
    別々のメールアドレスでテストした場合は正常に双方にメールが届きました。

    同一のメールアドレスで動作テストできると楽なのですが、
    対処方法はありますでしょうか? よろしくお願いいたします。

    1. Yusuke(管理人) より:

      Monakaをご利用いただきありがとうございます。
      コメントいただいた件は、メールサーバーによる「ローカル配信」が原因ではないかと思います。詳しくは「メール ローカル配信」等で検索していただければと思いますが、一つ参考のリンクを張っておきます。

      http://qiita.com/takuya-andou/items/5e0539690cae229281cb

      共用サーバーだと解決は難しいかもしれません。

      1. Ng より:

        ご返信ありがとうございます。

        ど素人で全く見当がつかなかったので大変参考になりました。
        ありがとうございました。

  20. asano より:

    お世話になります。
    大変すばらしいフォームということもあって今回使用させていただこうかと思います。
    一つ質問なのですが

    姓: 名:
    セイ: メイ:

    と名前を4つに分けている場合、下記3点を姓+名にすることは可能でしょうか?
    ・「___様よりメールが届きました。」
    ・「___様より、下記内容でメールが届きました。」
    ・フォームを入力した人への返信時の送信宛名

    ご教授いただけますと非常に助かります。
    お手数おかけいたしますが何卒よろしくお願いいたします。

    1. Yusuke(管理人) より:

      コメントありがとうございます。
      名前を姓と名に分けられるように作っていないため、対応させるにはある程度PHPの知識が必要になります。
      方法としては、
      1、「/Monaka/class/Send.php」の24行目あたりに「public $fullName;」を追加する。
      2、「public function substitutionSubmitContent($post) {」の部分で$this->fullNameに姓と名を結合させて代入する。
      3、「$this->requiredItem[“name”]」となっている箇所を全て「$this->fullName」に変更する。
      という感じになると思います。動作確認をしていないので、ちゃんと動くかわかりませんが参考にされてください。

      1. asano より:

        お世話になっております。
        ご返信ありがとうございました。
        参考にさせていただきたいと思います。

  21. murata より:

    お世話になります。
    大変丁寧な作品にとても感謝しています。
    ひとつだけ、メールアドレス入力の必須を解除したいのですが方法を教えて頂く事は可能でしょうか。

    1. Yusuke(管理人) より:

      Monakaをご利用いただきありがとうございます。
      返事が遅くなってしまい、申し訳ありません。

      メールアドレス入力の必須を解除したいとのことですが、入力者のメールアドレスはリターンメールに使用するため必須を外すことができません。
      (現状で未入力を可能にしてしまうとおそらくエラーが発生し、正常に終了しなくなると思います)

      今後のバージョンアップ時に検討させていただきます。
      現段階ではご希望に沿えず申し訳ありません。

  22. AI より:

    検索してたどり着きました。
    素敵なプログラムをありがとうございます。
    試してみたのですが、送信先には届いたのですが、リターンメールが送信されませんでした。
    書かれている基本設定以外に特に何も設定していないのですが、送られてきません。
    何か記載する必要があれば、お教えいただければ幸いです。

    1. AI より:

      すみません。ちゃんと届いてました。確認不足で申し訳ないです。

      1. Yusuke(管理人) より:

        解決したようで安心しました。
        今後ともMonakaMailFormをよろしくお願いします。

  23. mochi より:

    添付ファイルに必須をつけることは可能でしょうか。
    よろしくお願いします。

    1. mochi より:

      php記述時です。

      1. Yusuke(管理人) より:

        遅くなりましたが、添付ファイルの必須化が可能になりましたのでよければ最新版をご利用ください。

    2. Yusuke(管理人) より:

      コメントありがとうございます。

      すみません、現状では添付ファイルを必須にすることができません…。
      他の方からも要望がありましたので、次回バージョンアップ時に追加しようと考えております。

      現段階ではご希望に沿えず申し訳ありません。

  24. じゅんご より:

    お世話になっております。
    素晴らしいフォームをありがとうございます。

    以下の機能もあればいいなと思いました。
    ・mochi さん同様、私も添付ファイルに必須機能の追加
    ・自動送信メールに、相手の名前を差し込んで、◯◯様と記載

    ぜひぜひ宜しくお願い致します。

    1. Yusuke(管理人) より:

      コメントありがとうございます。

      添付ファイルの必須化はやはりご要望が多いようで、できるだけ早めに実装したいと思います。
      自動返信メールへ送信者の名前を表示する件も今後実装したいと思います。

      貴重なご意見ありがとうございます。

    2. Yusuke(管理人) より:

      遅くなりましたが、添付ファイルの必須化とリターンメールに送信者の名前を表示する件が実装できましたのでよければ最新版をご利用ください。

  25. ram より:

    初めまして。こちらのメールフォームを使用したくカスタマイズしたのですが、他の方がおっしゃっている通り、iPhoneからファイルを添付して送信するとエラーになってしまいます。ちなみに添付ファイルが最大5つ送れる仕様にカスタマイズしております。送信先のメアドがgmailだからエラーになる、、とかそういうことってあったりするのでしょうか。
    どうぞよろしくお願いします。

    1. Yusuke(管理人) より:

      コメントありがとうございます。

      iPhoneで検証してみますのでしばらくお待ち下さい。
      こちらのテストページでも同じ現象になりますでしょうか。
      http://web-dev.xyz/oss-sample/Monaka/mailform.php

      機種名やiOSのバージョンを教えていただけると助かります。
      また、どのようなエラーになるか、エラーメッセージが表示されていればおしえていただけますでしょうか。
      よろしくお願いいたします。

      1. ram より:

        こちら返信遅くなり失礼しました。
        テストページではエラーになりませんでしたが、自分でカスタムしたページはエラー画面となってしまいます。。
        「エラーが発生しました。再度お試しいただき、解消しない場合は管理者XXXにお知らせください。」という画面が出ます。
        機種はiPhone7、iOSのバージョンは10.2.1です。

        1. ram より:

          今作成しているページのリンクも貼っておきます。

          1. ram より:

            新しいバージョンのものをダウンロードして、拡張子もJPGを追加したのですがエラー画面が出てしまいますね…

          2. Yusuke(管理人) より:

            お待たせしました。フォームを確認しました(最初表示されませんでしたが、試しに.phpにしてみたら表示されました ^^;)

            Monakaは現状メールアドレスのinputが必ず必要なので、そのエラーが発生しているようです。

          3. ram より:

            わ、失礼しました。。そしてメアドの入力を外してたらエラーにもなりますよね…無事動作するようになりました。大変お手数お掛けいたしました。ご親切にアドバイス頂きありがとうございました。。。!

          4. Yusuke(管理人) より:

            解決したようで安心しました。
            今後ともMonakaをよろしくお願いします。

    2. Yusuke(管理人) より:

      お待たせいたしました。エラーは下のAAAさんと同じく拡張子が許可されていない内容のエラーでしょうか。
      その場合は取り急ぎ「JPG」を許可していただくことで対応していただけますでしょうか。

      今後「jpg」が設定されていることで「JPG」も許可できるように改善したいと思います。

  26. AAA より:

    素晴らしいフォームありがとうございます!
    2016年7月4日のコメントでiPhone・iPadから画像添付の改善をされたとのことですが、
    「写真またはビデオを撮る」でカメラを起動し撮影した写真は添付できますが、
    フォトライブラリの画像を添付しようとしたところ
    確認画面で「添付できないファイルです」とエラー表示されます。
    拡張子の問題でしょうか?
    教えていただきたいです。
    よろしくお願いいたします。

    1. Yusuke(管理人) より:

      コメントありがとうございます。

      iPhoneで検証してみますのでしばらくお待ち下さい。
      こちらのテストページでも同じ現象になりますでしょうか。
      http://web-dev.xyz/oss-sample/Monaka/mailform.php

      また、機種名やiOSのバージョンを教えていただけると助かります。

      よろしくお願いいたします。

      1. AAA より:

        ご対応ありがとうございます。
        試してみたのが、
        iPadAir2とiPhone7でOSは両方iOS10.2.1 になります。
        よろしくお願いいたします。

      2. AAA より:

        追伸:
        いただいたテストページでも同じ現象になります。

        添付できないファイルです
        添付可能なファイルの種類(拡張子)は[jpg・jpeg・gif・png・pdf]です

        と赤文字で表示されます。
        よろしくお願いいたします。

        1. Yusuke(管理人) より:

          お待たせいたしました。エラーが確認できました。

          原因はおそらく、添付しようとしているファイルの拡張子が「.JPG」のため「jpg」では許可できていないからだと思います。

          取り急ぎ許可する拡張子に「JPG」を追加することで対応していただけますでしょうか。

          今後「jpg」を許可しておくことで「JPG」でも大丈夫なように改善したいと思います。

          よろしくお願いいたします。

        2. Yusuke(管理人) より:

          「jpg」を許可することで「JPG」も許可されるように変更いたしましたのでよければ最新版をご利用ください。

          1. AAA より:

            iPhone・iPadから送信できるようになりました!
            早急なご対応ありがとうございます!
            これからも使わせていただきます。
            今後ともよろしくお願いいたします。

        3. Yusuke(管理人) より:

          解決したようで安心しました。
          今後ともMonakaをよろしくお願いします。

  27. Reina より:

    はじめまして。お世話になります
    こちらのフォームでは、
    リターンメールを送信しない設定は可能でしょうか?

    1. Reina より:

      すみません解決しました。
      修正する場所を間違えていました。

      1. Yusuke(管理人) より:

        すみません、遅くなりました。

        既に解決済みのようですが、一応方法を記載しておきます。
        返信メールを送らないようにするだけでしたら、Monaka/lib/Send.phpの30行目、

        $this->_returnSend($returnMailTitle, $returnMailHeader, $returnMailFooter);
        

        この部分をコメントアウトまたは削除することで可能になると思います。

  28. 畠山佳明 より:

    はじめまして。お世話になります。

    以下のように設定したのですが、当サイトを知ったきっかけチェックボックにチェックが入ってない状態で送信出来てしまいました。

    $form->inputCheckboxBR(“当サイトを知ったきっかけ”, $params, “必須”);

    チェックボックスにチェックが入っていない状態場合、他同様に確認画面に「必須項目です。」を出すことは出来ないでしょうか?

    1. Yusuke(管理人) より:

      コメントありがとうございます。
      ソースを確認したところ、前回アップデート時にチェックボックスの必須化ができない形になっておりました。近日中に修正版をアップしたいと思いますので、少々お待ち下さい。

    2. Yusuke(管理人) より:

      お待たせしました。
      チェックボックスが必須化出来ない件を修正しましたので、最新版のv2.0.1をお試しください。
      今後ともMonakaをよろしくお願いします。

  29. kaorin より:

    添付ファイル付きのフォームを探しており、たどり着きました。
    ありがとうございます!
    1点質問させていただきたいことがあります。

    phpでのチェックボックスまたはラジオボタンで必須設定にしても、必須であるという認識がされません。
    以下のソースは、このページで案内されているソースですが、これをそのまま設置しても必須認定されませんでした。
    ——————————————————-
    “text”,
    );
    $form->inputCheckboxBR(“当サイトを知ったきっかけ”, $params, “必須”);
    ?>
    ——————————————————-
    なにか原因があるのでしょうか?なにか見落としているところがあればご教授いただけますでしょうか?
    どうぞよろしくお願いいたします。

    1. Yusuke(管理人) より:

      コメントありがとうございます。
      ソースを確認したところ、前回アップデート時にチェックボックスの必須化ができない形になっておりました。近日中に修正版をアップしたいと思いますので、少々お待ち下さい。

    2. Yusuke(管理人) より:

      お待たせしました。
      チェックボックスが必須化出来ない件を修正しましたので、最新版のv2.0.2をお試しください。
      今後ともMonakaをよろしくお願いします。

  30. spTarou より:

    はじめまして。
    使いやすいメールフォームをありがとうございます。
    このメールフォームですがセキュリティ面はどんな感じでしょうか?ご教示頂けると幸いです。

    1. Yusuke(管理人) より:

      すみません、遅くなりました。

      XSS対策はhtmlspecialcharsでエスケープを、CSRF対策はトークンを使用しています。
      セキュリティに関して熟知しているわけではありませんので、他に気になる点(この対策はできているのか?)等ありましたらお知らせください。

      (この返答は安全性を保証するものではありません。ご利用は自己責任でお願いいたします)

  31. FM より:

    便利なプログラムを作っていただきありがとうございます。

    質問が2点あります。
    フォーム入力後、確認画面でPNGファイルがはじかれてしまいます。
    さらに「x」「y」という項目が表示されてしまいます。

    こちらはどのようにすれば解決できそうでしょうか。
    お手数ですがご教示いただければ幸いです。

    1. Yusuke(管理人) より:

      コメントありがとうございます。

      PNGファイルがはじかれる件について、初期状態ではpngを許可していませんので、
      configファイルの設定でpngを許可してください。

      また「x」「y」が表示される件ですが、可能であればURLか画面のキャプチャを送っていただけますでしょうか。

      よろしくお願いします。

      1. FM より:

        さっそくご返信をいただきありがとうございます。
        PNGに関して解決いたしました。
        ありがとうございます。
        キャプチャの送信先はどちらにすればよろしいでしょうか。
        URLは認証付きテスト環境のため記載することができません。
        お手数ですがご確認をお願いいたします。

        1. Yusuke(管理人) より:

          記事上部にある「サンプル」からお送りください。

          1. FM より:

            サンプルからキャプチャをお送りました。
            ご確認をお願いいたします。

        2. Yusuke(管理人) より:

          キャプチャを確認しました。
          不要なデータがPOSTされているようです。一度HTMLのソースを見直していただき、不必要なinputタグがないかご確認ください。
          HTMLに問題がなく、Monakaが原因で不要なPOSTが行われているようでしたら修正いたしますので再度ご連絡ください。

  32. ろいず より:

    ファイルが添付できるphpを探していてたどり着きました。デザインも変更しやすくとても良くて是非使いたいと思っているのですが、ブラウザによって一部挙動が違うのは解決方法はありますでしょうか?

    入力項目→確認画面→戻る

    で入力値がfirefoxだけ保持されません。
    Opera、Chrome、Safariでは保持されます。
    もし解決方法等ありましたらご教授いただけると幸いです

    1. Yusuke(管理人) より:

      コメントありがとうございます。

      Firefoxだと「戻る」で入力値が保持されないのですね…。気づいていませんでした。
      ブラウザの仕様によるものなので、現状解決策が思いつかないのですが、
      何か方法が見つかったら対策したいと思います。

      現段階ではご希望に沿えず申し訳ありません。

      1. ろいず より:

        ありがとうございます。
        またちょくちょくのぞかせてもらいます。

  33. 山さん より:

    はじめまして。お世話になります。

    必須項目のやにて
    「0」ゼロを入力して確認画面に進むと
    『必須項目です。 』のエラーが表示されます。

    では用途的にご対応は不要かと思いますが
    では必要な場合もあるかと思いますので
    ご確認をお願いします。

    1. 山さん より:

      タグ表記部分が消えてしまいましたので
      全角にて再度コメントし補足いたします。
      ——————————
      必須項目の<input type="text">や<textarea>にて
      「0」ゼロを入力して確認画面に進むと
      『必須項目です。 』のエラーが表示されます。

      <textarea>では用途的にご対応は不要かと思いますが
      <input type="text">では必要な場合もあるかと思いますので
      ご確認をお願いします。
      ——————————
      以上

      失礼いたしました。

      1. Yusuke(管理人) より:

        ありがとうございます!確認して修正したいと思います!

        1. より:

          修正リリース(v2.0.4)ありがとうございます。

          今後ともよろしくお願いします。

          1. Yusuke(管理人) より:

            こちらこそ、ご報告ありがとうございました!

  34. AAA より:

    いつもお世話になります。
    初歩的な質問になってしまったら申し訳ありません。

    アップロードの容量制限を3000KBに設定したところ
    2000KBほどまでしか送れず、それ以上は「容量が大きすぎます」とのエラー表示になります。

    phpiniの設定値を超える場合はエラーと書かれていますが、
    phpiniの設定値はどこを確認すれば分かるのでしょうか?

    お手数おかけします。
    よろしくお願いいたします。

    1. Yusuke(管理人) より:

      AAAさん、こんばんは。
      phpiniの設定は下記の関数で表示することができます。

      https://goo.gl/e8k6Pk
      (なぜかコメントにphpinfoを半角で入力するとエラーになるので短縮URL貼っておきます)

      memory_limit
      (メモリ使用量の上限)

      post_max_size
      (POSTデータの最大サイズ ※1回のアップロードファイルすべての合計サイズ)

      upload_max_filesize
      (1ファイルあたりの最大アップロードサイズ)

      上記3つの項目が影響します。

      設定を変える方法は使っているサーバーによって変わります。
      レンタルサーバーであれば管理画面から変更することができる場合と、変更できない場合があります。

      1. AAA より:

        ご丁寧にありがとうございます。
        php.infoを使用したところデフォルト設定が2Mになっていました。
        php.iniを作成し、アップロードサイズを変更することができました。
        ありがとうございます。
        今後もよろしくお願いいたします。

  35. kojikoji より:

    素晴らしいプログラムをありがとうございます。
    初歩の質問ですみません。
    当サイトを知ったきっかけ(必須)

    “text”,

    end(‘確認する’); ?>

    多言語に対応させるため、四苦八苦しています。”検索”,”ブログ”,”その他”と’確認する’ をそれぞれ日本語(jpn.php)、英語(eng.php)、仏語(frn.php)から呼び出す方法を教えて頂けると助かります。
    よろしくお願いします。

    1. Yusuke(管理人) より:

      コメントありがとうございます。
      返信遅くなってすみません。

      フォームの画面は.phpでしょうか。であれば、それぞれの外部ファイル(jpn.php、eng.php、frn.php)に各文言を変数で保持し、表示したい言語の外部ファイルを読み込み、

      $params = array(
      $search,
      $blog,
      $other => “text”,
      );
      $form->inputCheckboxBR(“当サイトを知ったきっかけ”, $params);

      このようにすることで実装可能かと思います。
      (検証していないので確実とは言えません… m(_ _)m)

      よければお試しください。

      1. kojikoji より:

        お世話になります。
        簡単な質問にお答えいただきありがとうございました。
        もう一つ質問があります。
        こちらも基本的なことで申し訳ありません。
        以下の確認するがうまく読み込めません。
        <?php $form->end(’確認する’); ?>
        また、
        日本語ページはEUC-JPで作られていて、confirmation.phpを読みに行ったときにエラーとなります。多言語はUTF-8なので問題ありません。
        こちらの解決策があればご教授ください。
        宜しくお願いします。

      2. Yusuke(管理人) より:

        すみません、文字コードはutf-8しか対応してないので、フォーム画面をutf-8に変更していただくしか方法がないと思います。

        1. kojikoji より:

          お世話になります。
          回答ありがとうございました。

          1. kojikoji より:

            もう一つ教えてくださ・い。
            送信完了後に、エラーを表示しますが、メールは届きます。
            しかし、メール下部の送信時間が9時間ほどマイナスします。
            ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
            [送信日時]2017年06月13日(Tue) 05時16分59秒
            何らかのサーバー時間かずれているのでエラーが出ると思いますが、わかりますか。
            宜しくお願いします。

          2. kojikoji より:

            送信後のエラーの件、php.iniファイルにタイムゾーンを設定したら直りました。
            お騒がせしました。

  36. sam より:

    やりたかった昨日がばっちり入ったフォームありがとうございます。
    ただ、うまくいかない部分があり困っています。
    htmlに上記記載の通り、

    と記載したところ、「エラーが発生しました」と出て、フォームに進むことができません。
    http://自分のサイト/mailform.php と直打ちしたところ、フォームが起動したので、ためしに、
    としたところフォームが起動し、問題なく添付ファイルが送れました。この記述では、なにか不具合が起きるのでしょうか?
    なにぶん、phpに詳しくないので、ご教示いただけますと幸いです。

    1. sam より:

      すみません、タグを書いてしまうと、表示されないのですね。
      form タグでくくられた中に、confirmation.php ではなく、mailform.php を入れたということです。(階層は違いますが)
      よろしくお願いします。

    2. Yusuke(管理人) より:

      コメントありがとうございます。

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

      この部分でしょうか。ここは必ずconfirmation.phpに送信する必要がありますので、変更するとエラーになります。mailform.phpに変更したい理由は何でしょうか?

      1. sam より:

        コメントありがとうございます。先に書きましたように、confirmation.phpにしますと、「エラーが発生しました」と出てフォームが起動しないのです。
        よろしくお願いいたします。

        1. Yusuke(管理人) より:

          うーん、ディレクトリの構造がどのようになっているか、教えてもらうことはできますか?
          それと、可能であればそのページのURLをメールで送ってもらえると確認できると思います m(_ _)m

  37. felix より:

    お世話になっております。素敵なメールフォームをありがとうございます。

    一点お伺いしたいのですが、画像を添付ファイルとして添付しようとしたときにうまく添付できず、文字化けしたものが表示されて添付ファイル1の部分に”必須項目です”のエラーが出てしまう現象の解決方法はありませんでしょうか?
    他の部分にエラーは出ておらず、添付ファイルの部分のみおかしくなっています。

    1. Yusuke(管理人) より:

      コメントありがとうございます。
      下記のサンプルページで同じ現象が起きますでしょうか?

      http://web-dev.xyz/oss-sample/Monaka/mailform.php

      起きない場合は、お使いのサーバーの設定等の問題かもしれません。

  38. あたろう より:

    macOS Sierraのsafariで「送信」ボタンを押すと、
    「不正な送信です。」となります。
    すみません、素人なのでどう説明していいのかわからないのですが、
    他の環境では動いております。

    1. Yusuke(管理人) より:

      コメントありがとうございます。
      調査して返答させていただきます。

    2. Yusuke(管理人) より:

      すみません、遅くなりました。
      こちらの環境では問題なく送信できていますので、あたろうさんのブラウザ(safari)固有の問題と考えられます。考えられるのは「cookieが無効になっている」くらいなのですがいかがでしょうか。

  39. kojikoji より:

    いつもお世話になります。
    「確認」とか「送る」などのボタンを「Check」「Send」などに変えるとボタンの枠が小さくなってしまいます。cssフォルダも見ていじってみたのですが変わりません。
    どこを確認すればよいでしょうか。ご教示ください。宜しくお願いします。

    1. Yusuke(管理人) より:

      すみません、遅くなりました。
      「確認する」をCheckに変えても小さくはならないのではないでしょうか?
      「戻る」や「送信」を変更する場合は Monaka/css/confirmation.css の「戻る」「送信」の部分を全て同じように変更してください。

      1. kojikoji より:

        お世話になります。
        IEの不具合のようです。再起動したら思う表示になりました。
        ありがとうございました。

  40. Romel より:

    Hi Admin.

    Thank you so much for the script

    unfortunately I tried this and when we test to send its working but we cannot received any email for $adminMail. but from the sender email they are receiving the returnEmail. why is that?
    any Idea? I’m from Philippines by the way.

    1. Yusuke(管理人) より:

      Hi Romel.

      Thank you for your comment.

      Are you editing files other than “Monaka/config/config.php”?
      Would you please send “Monaka/config/config.php” from the following mail form?

      http://web-dev.xyz/oss-sample/Monaka/mailform.php

      Thank you.

      1. Romel より:

        Hi thank you so much for your reply so quick.

        I already sent the file in the webform you provided..

        We received your test application for the webform in our website.
        after seeing that we test for ourselves but it still now working.
        still only sender is receiving return email..

    2. Yusuke(管理人) より:

      I sent an e-mail using config.php which I got.
      Have you received it?

      1. Romel より:

        yes I received an email….

        is there any error in the code we edited?

        1. Yusuke(管理人) より:

          There is no error.

          I sent a return mail, but have you received it?

          Can you change the e-mail address entered in the mail form to another one and try it?

          1. Romel より:

            I’ve received the return email you sent to me used by my email.

            we’ve tried to use different email.. actually only one email there we will use for adminEmail.. we just use different for test.. but still not working.. we also use different email for Sender(for returnemail) and its working. is it matter in the region? because we are in Philippines and we change all character in the program into English. because most of it is in Japanese. is that matter in region or server region etc?

            Sorry for for inconvenience.. your form is good to use.

    3. Yusuke(管理人) より:

      Your email was sent to my spam folder.
      yahoo.com & gmail.com (Free mail) may be a problem.
      Did you receive an email in the spam folder?

      1. Romel より:

        Hi I think I figure out the problem, scripts taking too much time to execute. The maximum execution time for our account is set is 120 seconds. It appear that the scripts require more time to execute. Whrer I will reduce the execution time and change it to 120 sec?

        1. Romel より:

          How to make the script upload up to 10MB?

          can you help me?

      2. Romel より:

        I emailed you sir did you received it?. its about how i will change the execution time of the script

        But scripts taking too much time to execute. The maximum execution time for your account is set is 120 seconds. It appear that your scripts require more time to execute. How to reduce the execution time to 120 seconds?

      3. Romel より:

        Hi admin
        can you give me a code reducing the execution time for this one? our execution time in our domain is only 120s.. Please sir..

      4. Romel より:

        Hi Yusuke admin,

        I resolve now the problem. but file size is only 1mb? for upload size? how to increase the file size of this one?

      5. Romel より:

        Hi Admin,

        How to make the script upload up to 10 MB?
        Can you help me?

    4. Yusuke(管理人) より:

      The size of the file is limited by php.ini.
      Edit the php.ini on the server.

      1. Yusuke(管理人) より:

        And in config.php

        $maxmemory = 0;
        

        By doing this, there is no restriction on the script side.

  41. SUGA より:

    お世話になります。
    これから使いたく、今ページを組んでるのですが、

    使い方が普通とは違い、報告書形式にしたくてやってまいりました。
    要は「お名前」をHTML上は「報告者」としてユーザーに記入させようと思っていましたが、
    報告者が決まっていて、10人未満なのでセレクト方式の方がいいのではないかと思いました。

    もしよろしかったら、

    報告者名(必須)
    inputName(“お名前”);

    報告者アドレス(必須)
    inputMail(“メールアドレス”);

    メールアドレス確認(必須)
    inputMailCheck(“メールアドレス確認”);

    この辺り、ヒント頂けると幸いです。
    宜しくお願い致します。

  42. カナ より:

    はじめまして
    添付ファイルを送れるタイプのメールフォームを探していました。
    デザインなども大変気に入ったのですが、
    1.
    このフォームは、Excelファイルなどは添付できないでしょうか?
    2.
    また、管理人様から見て、ExcelファイルやDocファイルを添付できる
    メールフォームというのは、あまりないものでしょうか?
    ご回答のほどよろしくお願いします。

    1. Yusuke(管理人) より:

      返信が遅くなり申し訳ありません。
      エクセルやワードファイルも、Monaka/config/config.phpの$ext_allowの部分で拡張子を増やしていただければ送信可能かと思います。

      よろしくお願いいたします。

  43. どんこ より:

    お世話になっております。
    添付ファイルできるメールフォームを探していてたどり着きました。
    スマホからも対応していて、まさにドンピシャなメールフォームをありがとうございます。
    お忙しいところ大変恐縮なのですが、添付ファイルについてお聞きしたいことがございまして。
    送信する画像添付ファイルをメールフォーム側でリサイズすることは可能でしょうか?
    スマホから画像を添付しようとするとどうしてもファイルサイズがでかすぎてしまい添付できず、かといってリサイズを行ってから添付してくれとユーザーに頼むのも、できない方がいらっしゃると思いまして。。。
    PHPの知識が初心者以下で大変申し訳ないのですが、やり方等々教えていただけたら幸いです。
    ご迷惑をお掛け致しますがよろしくお願いいたします。

    1. Yusuke(管理人) より:

      返信が遅くなり申し訳ありません。
      今のところそういった機能はなく、実装予定もありません。
      もしかしたら今後のアップデートで実装するかもしれませんが、現時点ではご要望に沿えず申し訳ありません。

  44. cruz より:

    お世話になります。
    httpsの環境でも動作しますでしょうか?

    1. Yusuke(管理人) より:

      返信が遅くなり申し訳ありません。
      https の環境でも問題なく利用できると思います。

      よろしくお願いいたします。

  45. evga より:

    はじめまして。
    ステキなメールフォームを使わせていただいたおります。
    一つご質問ですが、必須項目の未入力などにより「戻る」ボタンを押した場合、入力内容は残らない仕様でしょうか?
    またその場合、入力内容が残る仕様にカスタマイズは可能でしょう?
    よろしくお願いします。

    1. Yusuke(管理人) より:

      返信が遅くなり申し訳ありません。
      ↓の方の方法でうまく行く可能性があります。
      お試しください。

  46. こま より:

    IE11で確認画面移行後、ブラウザバック時に入力内容が白紙に戻るバグがあります。
    これはセッション使用時にブラウザキャッシュを有効にすることで解消します。

    config.phpファイルの一番下へ
    3行追加することで、対応完了致しました。
    参考になれば幸いです。
    header(‘Expires: -1’);
    header(‘Cache-Control:’);
    header(‘Pragma:’);

    1. Yusuke(管理人) より:

      ありがとうございます!次回アップデートの際に組み込ませていただきます。

  47. ぽぽ より:

    20枚以上の画像を添付できなかったのですが20枚以上添付することは出来ないでしょうか?

  48. ぽぽ より:

    あ、「phpini設定範囲内」で決まっているんですね。
    申し訳ありません。

    1. Yusuke(管理人) より:

      返信が遅くなり申し訳ありません。
      送信できるファイルのサイズは、

      Monaka/config/config.php 内の 下記と、

      // アップロード容量制限(0=しない・1=する)
      $maxmemory = 1;
      // 最大容量(KB)
      $max = 3000;
      

      php.iniのmemory_limit、post_max_size、upload_max_filesize が関係しておりますので、各設定の見直しをよろしくお願いいたします。

  49. FM より:

    去年から使用させていただいております。
    iphoneからの投稿時、添付ファイルで「ファイルの容量が大きすぎます」とエラーが出てしまうようです。
    iphone6からsafariで検証しています。
    http://web-dev.xyz/oss-sample/Monaka/mailform.php
    こちらのサンプルでも同じ現象が起きてしまいます。
    $maxmemoryは0に設定しています。
    iphoneでの撮影時、オリジナルで撮影したものはわりとエラーが起きず、ビビッドなど効果をつけて撮影したものが上記のエラーになるような気がします・・・
    お手数ですがご確認いただけますでしょうか。

    1. Yusuke(管理人) より:

      返信が遅くなり申し訳ありません。
      送信できるファイルのサイズは、

      Monaka/config/config.php 内の 下記と、

      // アップロード容量制限(0=しない・1=する)
      $maxmemory = 1;
      // 最大容量(KB)
      $max = 3000;
      

      php.iniのmemory_limit、post_max_size、upload_max_filesize が関係しておりますので、各設定の見直しをよろしくお願いいたします。

  50. face より:

    macOS Sierraの Chromeで「送信」ボタンを押すと、
    「不正な送信です。」となります。
    Chromeの環境設定でCookieデータの保存と読み取りを許可するにチェックしています。
    他のブラウザでは送信できます。
    よろしくお願いします。

  51. ここあ より:

    はじめまして

    ダウンロードさせていただき設置してみましたが、以下のメッセージ表示となります。

    ファイルサイズの総量が大きすぎる可能性があります。

    php.ini内の設定で必要と思われる箇所は 4Gとかなり大きな設定にしてあります。
    またconfig.phpの $maxmemory を0 にしても 1にして$max を大きくしても同様でした。
    他に気を付ける点があれば教えていただける助かります。

    どうぞ引き続きよろしくお願い申し上げます。

    ファイルサイズの総量が大きすぎる可能性があります。

    1. Yusuke(管理人) より:

      返信が遅くなり申し訳ありません。
      ファイルサイズの総量が大きすぎる可能性があります。のエラーが出る場合、送信しようとするサイズに対してサーバー側のpost_max_sizeのサイズが小さいことが原因ですので、ご確認いただけますでしょうか。

      よろしくお願いいたします。

  52. K.M より:

    お世話になっています。

    phpでメールフォームを使わせていただいています。

    確認画面で
    A non well formed numeric value encountered in
    が出ます。

    error箇所は【/lib/Confirmation.php on line 235】

    記載内容は↓

    $postMaxSize = ini_get(“post_max_size”) * 1024 * 1024;

    対処方法を教えてください。
    確認する箇所があれば、ご支持をください。

    1. Yusuke(管理人) より:

      コメントありがとうございます。

      PHPのバージョンは7.1でしょうか。
      7.1から ‘8M’ * 1024 * 1024 のように、文字列と数値を計算させることでエラーが発生するようになったようで、

      $postMaxSize = ini_get(“post_max_size”) * 1024 * 1024;

      この部分を

      $postMaxSize = ini_get((int)“post_max_size”) * 1024 * 1024;

      としていただくことで改善できるかもしれません。

      お試しいただけますでしょうか。
      よろしくお願いいたします。

      1. K.M より:

        お返事遅くなりました。
        ローカルエラーの問題、ご指示通りに書き換えると
        無事エラーが出なくなりました!

        ありがとうございました♪

        1. Yusuke(管理人) より:

          無事解決したとのことで安心しました。
          今後とも「Monaka」をよろしくお願いいたします。

  53. K.M より:

    先日質問したエラーは、ローカル内のみで発生していました。

    もう一つ質問があります。
    確認画面から送信をすると500errorが出てしまいます。(chrome)
    safariでも動作しませんでした。

    簡易メールフォームだと送信できるんですが…
    どの点を改善すればいいのかがわかりません。
    ご教授いただけますでしょうか。

    1. Yusuke(管理人) より:

      こちらのサンプルからでも同じことが起きますでしょうか。
      http://web-dev.xyz/oss-sample/Monaka/mailform.php

      起きないのであれば、PHPのバージョンの問題かもしれませんので、可能であればエラーログを確認いただき、エラーメッセージをお知らせいただけますと幸いです。

      よろしくお願いいたします。

      1. K.M より:

        お世話になっています。お返事が遅くなりました。
        サンプルが無事に動き、コピペしたのですが、動かなかったので
        再度ファイルをダウンロードさせていただき、
        改めて動かしたところ、無事に動作いたしました!
        私が変に書き換えてしまっていたようでした…。
        ご迷惑をおかけしました!

        素敵なメールフォーム、ありがとうございます!利用させていただきます♪

        1. Yusuke(管理人) より:

          無事解決したとのことで安心しました。
          今後とも「Monaka」をよろしくお願いいたします。

  54. Sa.O より:

    お世話になります。
    ファイル添付可能なメールフォームを探していたらこちらにたどり着き、無事に動作確認もできました。
    素晴らしいフォームをありがとうございます。

    こちらのフォームの「確認する」ボタンや、入力スペースの色を変更するにはどのファイルをいじれば良いのでしょうか?
    素人質問で申し訳ございませんが、お時間があるときにご連絡頂けましたら幸いです。

    1. Yusuke(管理人) より:

      コメントありがとうございます。

      「確認する」ボタンの色は、 `Monaka/css/mailform.css` の、

      .confirmation_btn {
        ・・・
        background: #5d3fff;
        color: #fff;
        ・・・
      }
      

      この部分で指定してあります。

      入力スペースの色も同じく、 `Monaka/css/mailform.css` の、

      .mailform dd input[type="text"],
      .mailform dd select,
      dd textarea {
        ・・・
        background: #f4f4ff;
        ・・・
      }
      

      この部分で指定してあります。

  55. にちりん より:

    素晴らしいフォームありがとうございます!
    大切に使わせていただきます。

    1. Yusuke(管理人) より:

      ありがとうございます!

  56. Sa.O より:

    お世話になります。

    先日はCSSの件、ご教授頂きありがとうございました。
    こちらで色々試していたのですが、Gmailや独自ドメインからのメールは自動返信されるのですが、
    何故か携帯のキャリアメール(今回はソフトバンクのメール @softbank.ne.jp)では自動返信がなかったので何か別の設定が必要なのでしょうか?

    お手数ではございますがお時間がある時にご確認頂ければと思います。
    宜しくお願い致します。

    1. Yusuke(管理人) より:

      おそらく、キャリアのフィルターに引っかかっているのだと思います。
      自動返信からのメールの受信許可をお試しください。それで届く場合は、メールフォームによくある「○○からのメールを受信許可してください」のような文章を入れる必要がありますね。
      それでもダメな場合はSPF設定もお試しください。

      【参考(SPFについて)】
      https://sendgrid.kke.co.jp/blog/?p=3509

      【参考(SPFチェックツール)】
      http://mxtoolbox.com/spf.aspx

  57. kazumi より:

    Yusuke様、

    ファイルを添付できるフォームを探していてこちらにたどり着きました。

    とてもわかりやすく使いやすいプログラムで助かっております。

    ただ、2件(faceさん、あたろうさん)ほど報告があるようですが、私もMacのSierraでSafariをしようしている方から「不正な送信です」(←このメッセージが文字化け)となり送信できないというケースがありました。

    MacのEl Capitanでは問題なかったのですが・・・

    もし、何かこれに関して情報がございましたら教えていただけると助かります。

    素晴らしいプログラムの提供ありがとうございます。

    1. Yusuke(管理人) より:

      コメントありがとうございます。
      私の環境では起きない現象なので、利用されている方の環境の問題かと思っていたのですが、さすがに3件報告があるとなると調査の必要がありますね…。
      調べてコメントもしくは修正バージョンをアップいたします。

コメントを残す

*