【MailForm04】PHP多機能メールフォーム 禁止ワード、禁止IP設定付き(有料版)
フリーのPHP多機能メールフォームに禁止ワード(NGワード)、禁止IPアドレス設定機能を追加したプログラムです。
いたずらメール、いやがらせメールやスパム(迷惑)メール対策に効果が期待出来ます。
設定した禁止ワードが含まれている場合、または禁止IPアドレスからの問い合わせは一切受け付けません。
※送信者のIPアドレスは受信メール内フッター部に記載されています。
料金とお支払い方法について
MailForm04 多機能メールフォーム(禁止ワード、禁止IP設定付き)
プログラム料金 2,000円(税込)
↓より全機能搭載版をご購入ください。
有料版プログラムの統合について ※重要
これまでの有料版は各機能ごとにメールフォームプログラムを販売していましたが、プログラム管理の合理性、メンテナンス性、及びご購入いただく方の利便性などを考慮し、シンプルにフリー版と有料版の全機能が付いた全機能搭載版の2つのプログラムとしました。
尚、有料版のある1つの機能しか使わないという方がおられることなども考慮し、
全機能搭載版のプログラム本体料金を4,000円→2,000円に値下げいたしました。
何卒ご理解の程お願い申し上げます。
お手数おかけいたしますが、以下全機能搭載版のページよりお申し込み下さいますようお願い申し上げます。
【MailForm-FULL】PHP多機能メールフォーム全機能搭載版ページへ
主な機能と特徴、設置法、ご利用について
基本機能、特徴、設置法、その他すべて無料版の多機能メールフォームと同じになりますので、設置の際などはそちらをご覧ください。
ファイル内に以下の記述が追加されていますので、コメントを参考に設定等をお願いします。
※以下PHPファイル内ではスラッシュ2つ「//」以降その行の終わりまでコメント扱いになります。
//----------------------------------------------------------------------
// スパムチェック用設定 (START)
//----------------------------------------------------------------------
//禁止IPアドレス(文字列はシングルクーテーションで囲み、複数の場合はカンマで区切って下さい)
//※完全一致によりチェックします。送信者のIPアドレスは受信メールに記述されています。
$ng_ip = array('192.168.0.1','192.168.0.2');
//ご自身のIPアドレスを知りたい場合は以下のコメントを解除すれば確認画面にて確認できます。
//echo $_SERVER["REMOTE_ADDR"];
//禁止ワード(文字列はシングルクーテーションで囲み、複数の場合はカンマで区切って下さい)
//※URL、単語(英語、日本語)などなんでも指定可能。
$ng_word = array('NGワード','http://www.php-factory.net','おまえ');
/*
キーワード設定時の注意点
このキーワードを含んだものはすべて拒否されます。
たとえば「死」というキーワードを設定した場合、「死ぬ」、「死んだ」なども
該当してしまいますのでご注意ください。
英語の場合も「kill」と設定した場合、「skill」も拒否されてしまいますので
キーワード設定には十分ご注意下さい。
*/
//禁止ワード検証を行うコメント欄(textarea)のname属性の値
$ng_word_name = "お問い合わせ内容";
//ローマ字の大文字、小文字を同一のものと判断する?(する=1, しない=0)
//「する」の場合、PHPのバージョンが「5.2.0」以上である必要があります。
$stri_check = 0;
//----------------------------------------------------------------------
// スパムチェック用設定 (END)
//----------------------------------------------------------------------
サンプルデモ
サンプルデモ画面
※デモのサンプルフォームのHTMLはプログラムとセット(同梱)となっています。
「お問い合わせ内容」に「NGワード」、「http://www.kens-web.com」、「馬鹿」、が禁止ワードとして設定されています。禁止ワードにひっかかった場合は「禁止文字列が含まれています。」と表示されます。この文字列は自由に変更可能です。
動作確認済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系、スマイルサーバー、ファーストサーバで問題がある場合はこちらも参照下さい
経験上、結局は「餅は餅屋です」。プロバイダー系はプラン、金額に関係なく特に問題が多いです。サーバーの問題で時間を取られるのは非常に無駄ですし、その先ずっと影響しますのでサーバー選びは慎重にされることをオススメします。
特に理由がなければあえてこれらのサーバーは借りないほうが得策でしょう。高いから良い、安いからダメという安易なものでもありませんので難しいところですね。(まぁ安いには安いなりの理由があるのですが・・)
よくある質問と対処法など
メール送信不具合関連
メールが届かない・・・
様々な要因が考えられますが、まずは問題を切り分けるため、以下のことをご確認ください。
※2024/02/16追記
Gmail宛のメールが届かないという報告を多数いただいています。
Gmailのスパム対策が強化されたためと思われます。
対策などを以下ページにまとめていますのでご参照ください。
フォームから送信されたメールが迷惑メール扱いされる場合の対策
まずは配布中のものをダウンロードし、mail.phpで管理者のメールアドレスに1つのアドレスのみを設定し、一緒になっているcontact.htmlとともに同階層にアップロードし、送信してみて下さい。GmailなどのWebメールサービスを使用している場合には迷惑メールフォルダも確認ください。
※Gmailで他のメールアドレスを受信する設定にしている場合、30分~1時間ほど受信が遅れます。(これはGmail側の仕様になります)2013/9現在
■管理者のメールアドレスを2つ以上設定していませんか?
管理者のメールアドレスが2つ以上設定されている場合で送信先がGmailの場合にGmail側へのメールが届かない(迷惑メールにもなっていない)ことを確認しています。そのため管理者のメールアドレスはできる限り設置サイトのドメインと同じものにして、1つのみ設定して下さい。
■迷惑メールフォルダに入っていませんか?
Gmailやその他Webメールなどの場合、迷惑メールに入ってしまうことがありますのでご確認下さい。ただ、これはPHP側ではどうしようもありませんので、フィルタなどを設定の上対応下さい。
■設定したメールアドレスは本当に間違いないですか?
一度他のアドレス、またはGmailなどの無料メールアドレスを取得して送信テストしてみてください。
■mail.phpを開いたエディタはなんでしょうか?
メモ帳は厳禁です。ファイルが壊れます。推奨はTeraPadです。無料で使えるフリーソフトですので、ダウンロードしてインストールしてください。初めは特に設定などをいじらずデフォルトの状態でお使いください。もちろんその他のエディタやDWでも基本的にはまったく問題ありません。
■mail.phpの編集の際に必要な文字列等を削除されたりしていませんか?
mail.php内上部にも記載しておりますが、ダブルクーテーション「"」やシングルクォーテーション「'」、セミコロン「;」など、これらを削除されると動作しなくなりますので設定される際には注意下さい。
■サーバーはPHPが動作しますか?(ほとんどのレンタルサーバーでは問題ありません)
※CPIサーバーはデフォルトでは動きません(CPIについてはこちらの一番下を参考下さい)
サーバーのマニュアル等に掲載されているかと思いますのでご確認ください。
また、PHP4.3~PHP5.5(5.5以上でも基本的には問題無いかと思います)の環境で動作します。(ほとんどのレンタルサーバーでは問題無いです)
また、Sendmail機能を使っています(こちらもレンタルサーバーではほぼ問題無いです ※ただしWindowsサーバーの場合にはSendmail機能が無いことがほとんどなので使用できないとお考え下さい。一般的なレンタルサーバーはUNIX/LINUX系ですので問題ありません)
無料サーバーの場合、これらは無いことがほとんどですので基本的には動作しないと考えて下さい。
PHPが動くことを謳っている無料サーバーもありますが、実際には動かなかったという報告を複数いただいてます。
これを気にレンタルサーバーを借りてみてはいかがでしょうか。それほど高いものではありません。むしろ今の時代かなり安いです。無料サーバーであれこれ時間を無駄に使うことを考えると結果としてレンタルサーバーのほうが安いとも考えています。
参考URL:http://www.php-factory.net/server.php
■サーバーにアップロードしていますか?
ご自身のパソコン上ではそのままではメール送信はもちろんPHP自体動作しませんので、必ずサーバーにアップしてからテストしてください。
※XAMPP環境を入れてもメールの送信には別途特別な設定が必要です。
■ロリポップのコロリポプランでPHPバージョンが5.2の場合には動作しなかったとの報告がありました。
PHP5.3にすれば動作したとのことなのでお試し下さい。サーバー管理画面にて変更可能です。エックスサーバーのPHP5.2では動作しております。基本的にはそのようなことは無いはずではありますが。
■サーバーの試用期間中などはメール送信できないなどの制限がある場合もあります。※サーバーマニュアルやサーバー会社にご確認下さい。
■エックスサーバーを契約したのにメールが届かない。
エックスサーバーは無料お試し期間が10日ありますが、お試し期間中はメールの送受信ができません。入金後に送受信できるようになります。
■設置サーバーがスパムのブラックリストに登録されている
特にロリポップ系(ヘテムル含む)でこの現象を多く確認しています。ある日突然メールが届かなくなった場合はこれも疑ってみて下さい。
対策方法も含め詳しくは以下記事を参考にして下さい。
https://www.php-factory.net/cms/detail.php?id=4
■BIGLOBE(オフィスホームページサービス)の場合にはデフォルトでは送信できません
以下を参考に対応下さい。
https://www.php-factory.net/cms/detail.php?id=9
■その他以下ページのサーバーをお使いの場合には問題が出やすいです。
https://www.php-factory.net/cms/detail.php?id=6
■Google Apps(G Suite)をお使いの場合にはサーバーによってはそのメールアドレスでは受信できないようです。
転送設定や他のアドレスをご使用いただくなどで対応下さい。
(さくらサーバーで確認済)これはさくらサーバーの場合、送信先のアドレスが設置サイトのドメインと同じドメインのメールアドレスに設定している場合、
さくらサーバー上のメールサーバーを読みに行ってしまうため、送信先が見つからず送信に失敗するためと考えられます。
この場合、さくらサーバー側でもメールアドレスを作成すれば解決しますが、今度はGoogle Apps(G Suite)側に届かない状態になってしまうと思われますので根本的な解決は困難ではあります。(転送するなどしかありません)
■Return-Path(-f オプション)を指定しないと送信できない環境があります。(特にpostfixなど)
mail.phpのメール送信処理部分を以下のようにしてみて下さい。(ファイル内検索すれば見つかります)
mail($to,$subject,$adminBody,$header);
↓以下のように末尾に-f オプション(,'-f'. $to)を追記して下さい。
mail($to,$subject,$adminBody,$header,'-f'. $to);
上記記述のすぐ下あたりに自動返信メール用の記述もありますので忘れず同じように修正下さい。
mail($post_mail,$re_subject,$userBody,$reheader);
↓上記と全く同じです。
mail($post_mail,$re_subject,$userBody,$reheader,'-f'. $to);
メールが届いたり届かなかったりする(届かないことがある)
まず大前提としまして、PHPは動作したりしなかったりという不安定なことはサーバー障害を除き絶対にありません。常に要求された処理を必ず実行します。
要するに少なくとも一度以上正常に受信できているのであれば、プログラム側は問題ないとすることができます。
※ただ、PHP側ではメールが実際に届いたかどうかまでは判断できません。一方的に送信しているだけです。
この場合、メールが届かないほとんどの理由はPHPから送信された後の工程で発生していると考えられます。
具体的には受信するメールソフト側、メールサーバー、プロバイダなどです。
ただ、経験上、メールサーバー、プロバイダの影響である可能性は低いです。
これらがもし原因だとすると、そもそも一度も送信に成功しないでしょう。
(ただしメールサーバー、プロバイダでスパム判定などで弾かれている場合には、そのロジックが分からないため絶対ではありません。)
またGmailやYahooメールなどのWebメールサービスの場合、スパムと判断される可能性もあります。こちらもそのロジックは分かりませんので、対処のしようがありません。出来る限り独自ドメインなどのメールアドレスを使用されることをおすすめします。
デフォルトの機能ではBCC送信も可能ですので、他のアドレスをBCCに設定しておくなども有効です。
問題の切り分けにもなります。
また有料版にはなりますが、CSV保存版であればメール送信とは完全に別処理でメールの送信内容と同じ内容がCSVファイルに保存されますので、
仮にメールが受信できていなくてもCSVファイルを見ることで問い合わせ内容は確認できます。
※CSVファイルには必ず保存されますので問い合わせの漏れは防げます。(CSVファイルはエクセルなどで開けます)
CSV保存版のメールフォームプログラムは以下ページになります。
http://www.php-factory.net/mail/03.php
根本的な解決とはなりませんが、最悪の事態は回避できますし、メールは届かないけどCSVには保存されているという場合、
受信側の問題だということになり、問題の切り分けができます。
また管理者宛のメールの送信元はユーザーのメールアドレスが設定されますが、
これを固定のアドレスにすることで解決できるかもしれません。
mail.phpの以下の箇所
$header="From: $post_mail\n";
↓以下のように修正してみて下さい。
$header="From: $to\n";
これで自分自身が送信元になります。
Windowsサーバーでメールが届かない
申し訳ありませんが、Windowsサーバーの場合はSendmail機能が無いことがほとんどのため、対応しておりません。LINUX系サーバーにてご利用下さい。
※一般的なレンタルサーバーはほぼLINUX(UNIX)系なので問題ありません。
特に理由が無ければWindowsサーバーを新規で借りないことを強くおすすめします。
そもそもWindowsサーバー自体少ないですが・・・。無駄な時間を大量に費やすことになる可能性があります・・・^^;。
さくらサーバで確認画面→送信を押すとエラー(NOT FOUND、Internal Server Errorなど)、または「You don't have permission to access」(さくらサーバ共有SSLで確認)と表示される
さくらサーバの共有SSLにて確認していますが、さくらの共有サーバーの共有SSLは https://secure○○.sakura.ne.jp/○○○○.○○/のようになっています。
mail.phpのaction属性の値には現在実行中のファイルパスが自動で入るように($_SERVER['SCRIPT_NAME']で)設定していますので、本来「/○○○○.○○/mail.php」が指定されることを想定しますが、なぜかさくらの場合には、「/mail.php」が指定されてしまい、結果「You don't have permission to access」が表示されてしまい送信できないという現象が起きています。
これは「https://secure○○.sakura.ne.jp/mail.php」が指定されてことと同じになり、そこにはファイルが存在しないための結果です。
この場合、mail.phpの254行目付近の
<form action="<?php echo $_SERVER['SCRIPT_NAME']; ?>" method="POST">
を
<form action="mail.php" method="POST">
として下さい。これで解決するはずです。
その他のサーバーでは特に現在確認、報告等はありませんが、もしその他のサーバーでも同様の現象が起きた場合には、以上のことをお試し下さい。また、その旨ご連絡いただけると大変ありがたいです。
通常のURLではそのようなことは起きません。また共有SSLもさくらのような仕様となっているところは少ないと考えられます。
その他さくらサーバで確認されていること
通知先メールアドレスが2つ以上あるとエラー(Internal Server Error)になることが確認されています。
この場合、他のアドレスはBccに設定するなどで回避可能です。
また、フォーム設置先のドメインのメールアドレスをGoogle Appsで作成、管理している場合、そのメールアドレスでは受信できないようです。
※ドメインと同じメールアドレスの場合、サーバー側が自サーバー内のDNSを探しに行ってしまうためと推測されます。
この場合の対処法は分かりませんので、申し訳ございませんが他のアドレスに設定されるか、サーバー側でもメールアドレスを作成するなどでご対応下さい。
あとはファイル自体がUTF-8の場合、
BOM有りで保存してしまったなどが考えられます。
送信時、または確認画面で「Warning: Cannot modify header information - headers already sent by ○○○」と表示されてしまう
これは主にPHPファイル内に余計な文字列や空白スペースなどが入り込んでしまったことが原因である可能性が高いです。問題を切り分けるため、まずはデフォルトの状態で送信先アドレスのみを変更の上でお試し下さい。
デフォルトの状態でOKであれば、作業時に何らかの問題が発生したと推察することができます。
具体的な原因としましては、リダイレクト処理など、PHPの「header」系の関数はその前に文字列(空白や改行も含む)があってはならないルールが有ります。そのため余計な文字列があるとエラーが発生します。
デフォルトではもちろんそのようなことはありませんので、作業時に誤って入り込んでしまったと考えられます。
その他余計な文字列の混入の他にUTF-8の場合、BOMありで保存してしまった可能性もあります。
PHPファイルは必ずBOM無しで保存する必要があります。
(BOM有りで保存してしまった場合、必ず不具合が出ます)
BOMの確認、変更方法についてはこちらをご参考下さい。
2つ以上のメールアドレスを送信先に設定するとメールが届かない
問題を切り分けるため以下ご確認いただければと思います。
1,さくらサーバーの場合、2つ以上の送信先を設定するとエラー(Internal Server Error)となることが確認されています。
※実際には送信元アドレス(from)が2つ以上だとエラー(Internal Server Error)になります。
この場合、2つ目以降のメールアドレスはBCCに設定いただくなどでご対応下さい。
※BCC機能はデフォルトの機能として付いております。
※BCCであれば複数でも問題ありません。
尚、当方で把握しているのはさくらサーバーのみですが、他のサーバーでもあり得る可能性はあります。
2,送信先に設定している2つ以上のメールアドレスすべてをそれぞれ1つだけにした場合にはいずれにも正常に届くのかどうかを確認して下さい。
※受信側の問題かどうか、及びメールアドレスが間違っていないかどうかの確認。
3,根本的な部分ですが、メールアドレスの設定方法が間違っていないかどうか
ファイル内のコメントでも説明しておりますが、以下のように設定する必要があります。
$to = "aaa@abc.jp,bbb@abc.jp";
※単にカンマで区切るだけではあります。
以上のことを確認してみて下さい。
迷惑メールに振り分けられてしまう(Gmailなど)【対策方法掲載あり】
PHPのバージョンが7.4以降(8以上含む)でエラーDeprecatedやFatal errorが表示される
最新版のプログラムではすでに修正済ですので、2020/05/08以降にダウンロードされたプログラムは無関係です。
【原因】
PHPのバージョンが7.4以降の場合、get_magic_quotes_gpc()関数が非推奨となったため、環境によってはDeprecatedエラーが表示される場合があります。
※追記:PHP8以降では廃止になったため、Fatal errorが表示されると思います。
【解決方法】
mail.phpをエディタソフトなどで開いて「get_magic_quotes_gpc()」の文字をファイル内検索して下さい。
フリー版の場合は2箇所、有料版の全機能搭載版の場合は4箇所あります。
以下のような記述です。
if(get_magic_quotes_gpc()) { $out = stripslashes($out); }
あとはその行を1行まるっと削除するだけです。削除しても機能には影響ありません。
または先頭にスラッシュ2つ「//」を付けてコメントアウトして下さい。
例 //if(get_magic_quotes_gpc()) ・・・・・
これでエラー表示が消えるはずですので確認して下さい。
get_magic_quotes_gpc()関数はmagic_quotes_gpcという設定がONかどうかチェックするためのものですが、
「magic_quotes_gpc」自体はPHP5.4で完全廃止されたため、本来は不要な記述ですが、古いバージョンでの利用も考慮し念の為に残していました。
ですので、PHP5以上であれば不要な機能なので削除して構わないのです。
確認画面での不具合関連
確認画面で文字化けする・・・
フォームページ側のhtmlファイルの文字コードとメールフォームプログラムの文字コードが同じかどうか確認してみて下さい。htmlファイル側の文字コードはソース上の以下metaタグにて指定されているはずです。(以下の場合はUTF-8です。※大文字小文字は関係ありません)
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
上記が問題ない場合、サーバー側で強制的に文字コードを変換されている可能性があります。
以下ページにまとめておりますので参考の上、対処下さい。
https://www.php-factory.net/cms/detail.php?id=6
確認画面で項目が表示されない、必須項目を入力しても未入力(未選択)となる
確認画面で項目名の箇所が空欄になってしまう、または必須設定した項目を入力したにも関わらず、「○○が未選択です」(本来入力欄の場合には「未入力です」と出ます)と出る場合には、2通り考えられます。
1つは単純にメールフォーム側の文字コードとプログラムの文字コードが間違っている。
この場合にはフォーム側の文字コードと同じ文字コードのファイルをダウンロードください。
2つ目はフォーム側文字コード、及びmail.php側の文字コードは間違いないにも関わらず同様の現象が発生する場合です。これはサーバー側で強制的に文字コードを変換されている可能性があります。
以下ページにまとめておりますので参考の上、対処下さい。
https://www.php-factory.net/cms/detail.php?id=6
確認画面が真っ白、またはPHPのソースコードが表示される
サーバーにアップロードしていますか?
ご自身のパソコン上ではそのままではメール送信はもちろんPHP自体動作しませんので、必ずサーバーにアップしてからテストしてください。
※XAMPP環境を入れてもメールの送信には別途特別な設定が必要です。
ご利用のサーバーでPHPが動作しないことが考えられます。
無料サーバーでもPHPが使えることを謳っているところもありますが、それでも正常に動かないことを複数確認しておりますので、無料サーバーの場合は動かないと考えたほうが良いかもしれません。その他もろもろも含め、トータルで考えると有料のレンタルサーバーを借りた方が結局は無料サーバーよりも安く済むと考えています。(もちろんもろもろの事情があるのかもしれませんが・・・)
サーバー移転によってサイトのURLをどうしても変更出来ない場合には、プログラムのみレンタルサーバーにアップする方法が有効です。フォームページ側とメールフォームプログラムは同一サーバーにある必要はありませんので。action属性で絶対パスを指定すればいいだけです。
確認画面から「前の画面に戻る」を押すとフォームデータがクリアされてしまう
デフォルトではjavascriptにてhistorybackを行なっておりますので、ブラウザの「戻る」と同じ挙動となります。
古いFirefox(バージョン2系)などではブラウザの戻るにてデータがクリアされてしまうということがありましたが、
現在のメジャーなブラウザ(Firefox、Chrome、Safari及びIEなど)では「戻る」だけではデータはクリアされないことを確認していますので基本的には問題ないと考えられます。
※ただし、すべてのブラウザでの保証は出来かねます。
ただ、稀に必須チェックをJavascriptの特殊なライブラリなどを使って行うとデータがクリアされることがあります。(adobeのspryで確認済)
他のJSにて行うか、必須項目はPHP側でチェックを行うようにするとそのようなことは起きないかと思います。
※必須項目はmail.phpにて設定可能です。
またPHPのセッション機能などを使用している場合もクリアされることがあります。
その場合、session_start()の前に「session_cache_limiter('none');」を記述することで対処可能です。
尚、どうしても改善しない場合で完全に対応する方法としては、「戻る」を押した際にはフォームデータを再度POSTし、フォームページ側の各項目にデータを反映するという結構重めな処理が必要になります。
そのためフォームページ側もカスタマイズする必要があり、この場合には別途カスタマイズとして承ります。ただ、上記でもご説明しましたが、ほとんどのブラウザでは問題ないと考えておりますので、費用対効果を考慮の上でご検討ください。
追記:以下ページで解決方法と対策版のファイルを配布していますので、必要に応じてご利用下さい。
http://www.php-factory.net/trivia/15.php
フォーム側の項目数と確認画面の項目数が違う、または項目すべてが受信できない
まず項目数に上限はありません。すべて自動で取得、送信します。
(実際には容量の問題、POST数の上限もあるため無制限ではありませんが現実的には気にせずOKなレベルです)
原因は主に以下2パターン考えられます。
1,name属性の値が重複している。
フォームページのname属性の値を確認ください。特に項目数が多くなるほどそういったミスが起きやすいです。
name属性の値は name="○○" の○○の部分です。これはページ内で重複しての使用はできません。重複した場合、後のもののみが確認画面で表示され、送信されます。
2,チェックボックス、ラジオボタンの場合は、1つ以上チェックされていないと項目自体送信されません。
そのため、予めどれかをチェック済(checked)としておくか、隠し要素(ダミー要素)を埋め込んでおくということが考えられます。
隠し要素(ダミー要素)の記述例(赤字が追加する要素です)
<input type="hidden" name="性別" />
<input type="radio" name="性別" value="男" />男
<input type="radio" name="性別" value="女" />女
このようにtype="hidden"の隠し要素を直前に記述しておくことで未選択の場合でも項目が送信されます。
チェックされた場合には、そちらが優先(上書き)されますので問題ありません。
文字化けや誤変換関連
Shift_JIS版で一部の文字が誤変換される、または一部文字列の間に円マーク「¥」が付いてしまう
Shift_JISはPHPと相性が悪く、特に「表」、「申」、「ソ」、「ダ」などがname属性の値に含まれている場合、誤変換されたり、サーバの設定によっては円マーク(¥)が付与されることがあります。
特に誤変換はプログラム側では対応できませんので、出来る限りShift_JIS版以外を推奨します。
※これはテスト時にすぐに分かるものなので、テスト時に問題が無ければ以降も問題ありません。(起こったり起こらなかったりということは基本的にありませんし、name属性の値はそれほど頻繁に変更するもので無いと思いますので)
中国語が文字化けする
メール内の一部文字が「?」と表示される(機種依存文字の誤変換問題)【対策方法掲載あり】
機種依存文字などは基本的には使用不可になります。たとえば㈱(かっこ株)や①(丸1)、その他特殊な記号や特殊な漢字などは変換できずに「?」と表示されます。これはPHPプログラム上どうしようもありませんのでご了承下さい。SJIS-WINで送信する方法もありますが、Windowsに限定されるなどの理由から実装はしておりません。
ただ、一般的な機種依存文字に限りますが、以下方法にて機種依存文字を変換することで表示可能です。
必要に応じてご対応下さい。
※ただし、機種依存文字の状態で送信できるものではありませんのでご了承下さい。
■機種依存文字の変換処理追加の方法について
機種依存文字を確認画面表示時に表示可能な文字列に変換する方法です。以下手順にて修正下さい。
1,mail.phpの以下記述箇所を探して下さい(1箇所のみですので検索してみてください)
※「確認画面の入力内容出力用関数」の箇所にあります。
$key = h($key);
2,この下に以下すべてをコピペ下さい。(スペース的な都合で複数行に改行されていますが、実際は4行です。)
※全選択→コピペでOKです。
以上、これだけです。
これで確認画面表示時に「変換前の文字」が「変換後の文字」に変換され、送信メール内でも変換された状態で送信されます。(たとえば「㈱」の場合、「(株)」に変換されます。)
ただし、あくまでも上記で設定している機種依存文字のみが対象となります。
その他必要に応じてご自身で追加いただくなどでご対応下さい。
※変換前の文字と変換後の文字の順番は合わせる必要があります。
また必ずテスト送信を行って下さい。何らかの問題が発生した場合にはすぐに元に戻して下さい。
送信メールでは記号のエスケープ(サニタイズ)を無効にしたい
デフォルトではセキュリティを考慮し、また余計なトラブルを防止するため送信メールの内容についてもエスケープ(サニタイズ)を実施しています。
※本来は不要と思われますが、万が一html形式でメールを表示してしまった場合などを想定しています。
そのため主に英語での入力時にあることですが、
クォーテーションや&マークなどがエスケープ(サニタイズ)されてしまいますので、これを回避したい場合は以下の方法で可能です。
ただ、日本語以外のフォームの場合には基本的には多言語対応版を使用されたほうが良いです。
※多言語対応版のほうは送信されるメールではエスケープ(サニタイズ)処理を実施していません。
mail.phpの以下の箇所
※「送信メールにPOSTデータをセットする関数」の箇所です。
※1箇所しかありませんのでファイル内検索(Ctrl+F)で見つかります。
$resArray .= "【 ".h($key)." 】 ".h($out)."\n";
↓ 以下のようにするだけです。
$resArray .= "【 ".$key." 】 ".$out."\n";
h()を削除するだけです。
その他(カスタマイズ方法や対処法含む)
パーミッションについて
基本的にはPHPファイルの場合、パーミッションの設定は必要ないサーバーが多いですが、
サーバーによってはパーミッションの設定が必要な場合があります。
詳しくはサーバーのマニュアル等をご確認ください。
Sendmailパスの設定について
たまにご質問を受けますが、 一般的なレンタルサーバーの場合、PHPはSendmailパスの設定等は基本的に必要ありません。 基本的にはすでに設定済みになっています。
※CGI(perl)などでは必要ですが
Yahooジオプラスでの設置について(重要)
【x】、【y】という項目が出てきてしまう
送信ボタンに画像を指定しているとそのように表示されてしまいます。自動ですべての項目を取得、表示、送信を行う仕様となっておりますため、こちらはしょうがないのですが、input type="image" ではなく、通常のinput type="submit" とし、CSSで背景画像として指定すると解決可能です。CSSでの修正が難しい場合にはカスタマイズとして1件2,000円にて対応いたします。
時間がずれる、または「タイムゾーン」関連のエラー(date()[function.date]:、またはdate_default_timezone等が含まれる文言)が出る
プログラム側でタイムゾーンは特に設定しておりませんので、設置サーバーの設定が適用されます。これは様々な環境での使用を考慮し、そのようにしております。ただ、サーバーによってはデフォルトで指定されていない、または海外サーバーのため、海外のタイムゾーンになってしまっていることがあります。
その場合には以下の1行をmail.phpの上部付近に追記して下さい。
(「必須設定 必ず設定してください」の上あたりでOKです)
上記は日本時間を使用する場合です。日本以外の場合には適宜設定ください。ただし指定できる書式('Asia/Tokyo'部分)は決まっていますので適当に設定してもダメです。海外の場合は検索して確認ください。また、自分は東京じゃなくて北海道だからと「'Asia/Hokkaido'」としてもダメですよ。。。日本は上記だけです。日本は地域によって時差はありませんよね。これでもエラー等が出る場合には遠慮無くお問い合わせください。
ぷららホームページサーバーで「Fatal error」 が出る(ぷららは設置不可です)
結論から申しますとぷららホームページサーバーでは動作しません。以下のようなエラーが出るはずです。Fatal error: Call to undefined function mb_convert_encoding() in ○○○
これは「mb_convert_encoding」関数がないよーというエラーで、
及び
Warning: date() [function.date]: It is not safe to rely on the system's timezone settings.
も出ます。これはタイムゾーンが設定されてませんよーのエラーになります。タイムゾーンは解決可能ですが、上記mb_convert_encoding関数はどうしようもありません。そのため、ぷららでは使用不可です。ぷららにも問い合わせましたが、正式に回答をいただいてますのでご参考まで
--------------------------------------------------------
恐れながら、弊社ユーザーCGIサーバーは「mb_convert_encoding」の関数に対応をしておりません。
また、現時点で今後対応の予定はございません。
ご要望に沿えず申し訳ございませんが、ご利用可能な範囲にてユーザー
CGIをご利用くださいますよう、お願い申し上げます。
--------------------------------------------------------
mb_convert_encoding関数は文字コードを変換する関数ですが、メールフォームにかぎらずPHPプログラムでは非常に良く使われるメジャーな関数です。
Yahoo、ぷららに限らずプロバイダ系全般に言えますが、制限や特別な設定が必要だったりとトラブルが非常に多いです。
本職では無いのでしょうがない部分もありますが、プロバイダ系は基本的には動作しないものとお考えください。
なのでホームページサーバーとしては極力使うべきではありません。(と断言できます(笑)もう、ちょっと怒ってますw)
たくさんの不具合報告をいただいています。
英語だけのメールや文字化けしたようメール(迷惑メール)が届くことがある【対策法掲載】
メール本文内にURLやhtmlタグのようなものがありませんか?
それらはスパムメール(迷惑メール)の可能性が高いです。メールフォームを使用しても100%スパムを防ぐことは非常に困難です。経験上数日に1通程度など、それほど多く届くようなことは経験がありませんが、あまりにも多い場合には、必須項目を設定する、リファラチェックを「On」にするなどで減らせる可能性があります。またはメールアドレスの2重チェック版でも減らせる可能性があります。
それでも減らない場合で業務に支障が出るような状態であれば一度ご相談下さい。トークンによる認証機能や最悪の場合、ランダムな文字列を表示し、その文字列を入力させるいわゆるキャプチャ認証なども実装可能です。ただし、この場合、お問い合わせユーザーに若干ながら手間を与えてしまうことになるのでCV率に影響する可能性もあります。最後の切り札的な実装と考えるのが良いと思います。
また、こちらは有償のカスタマイズとして対応しますのでご了承下さい。現在まではそこまで深刻な状況は報告されていません。
その他迷惑メールに対してできることを以下にまとめましたのでご参考下さい。
http://www.php-factory.net/trivia/09.php
送信メールに悪意のあるコードが埋め込まれてしまったら?
htmlタグ類はエスケープ処理を行っていますので、テキストでそのままタグが表示されるだけですのでscriptタグなどが有効になることはありません。また、メールはテキスト形式で送信されますので、その他のコードが埋め込まれたとしてもそのまま文字列として表示されるだけです。もちろんすべての環境で100%の安全を保証するものではありませんが、基本的にはそのようなリスクはほとんど無いと考えています。ただ、URLに関してはほとんどのメールソフトでは自動的にリンク設定がされてしまうのでクリックできてしまいます。分からないURLなどはクリックしないことを強くおすすめします。
ご使用に際してはあくまでもご自身の責任、判断にてお願い致します。
SSLページで使用したい
もちろんSSLページでの使用も可能です。あくまでもSSLはサーバー側の問題になります。PHP側は特に関係がございません。https経由でアクセスすればSSL経由で表示できます。プログラム側でhttp通信を伴うパスなどは含んでおりませんのでエラー表示も起きません。SSLの導入法などについてはこちらでは対応できませんので、ご自身で別途契約等を行って下さい。
jQueryMobileでページ遷移がうまくいかない
formタグに以下属性を追加してみてください。
data-ajax="false"
フォーム→確認画面→送信→ブラウザの戻る→送信でメールを再送信できてしまう。
あえてこれを行う人間の意図は分かりませんが(笑)、また解決したい場合のみですが、以下Javascriptをmail.phpの確認画面用HTML部のhead部分にコピペすれば対応可能です。
※ただし、戻るボタンをありえないほど素早く連打すると戻れてしまうことがあります・・・wのでご了承下さい。
<script type="text/javascript">
window.onunload = function(){};
history.forward();
</script>
ブラウザの「戻る」を完全に無効化することはできません。こちらはあくまでも戻るボタンで戻った際にページを逆に戻すという処理で実現しています。
~IE10、Firefox、Chromeにて確認していますが、すべてのブラウザが対応しているかについては分かり兼ねますので完璧な方法とは言えませんが、とりあえずはこれで十分かと思います。
確実に再送信を防ぐにはPHP側でトークンなどを利用した処理が必要になります。どうしてもこちらが必要な場合にはカスタマイズにて承ることは可能ですのでご相談下さい。
送信完了ページに指定したページヘリダイレクトが行われない
可能性として考えられるのはmail.phpをUTF-8のBOMありで保存してしまったなどがあります。必ずBOM無しで保存下さい。TeraPadの場合にはUTF-8NがBOM無しです。BOMについての詳細や変更方法については以下を参考下さい。
UTF-8使用時の注意点(BOMあり、無し)
チェックボックス(type="checkbox")を必須項目に設定したい
チェックボックスはその他のname属性の値と異なり、後ろに[]がつきますが、mail.phpにて必須項目に設定する箇所では[]を取った文字列で指定下さい。
name属性の値に半角スペースを使いたい
PHP側で処理する関係でname属性の値に半角スペースは使用できません。
要するに「name="名前 フリガナ"」は不可ということです。全角スペースの「name="名前 フリガナ"」はOKです。
日本語、ローマ字、全角スペース、ハイフン、アンダーバー(_)などは使用可能です。ただし、機種依存文字(㈱や①)、特殊記号、その他の言語などは使用不可です。基本的にはこのプログラムは管理者、及びユーザーが日本人であることを想定しております。
英語は可能ですが、エラーメッセージ、自動返信メールの文言等も変更する必要があります。また外国語環境での受信確認は行っておりません。(JISの文字コードで送信するため外国語環境のパソコンでは正常に受信できない可能性もあります)メール自体をUTF-8で送信する外国語に対応した多言語対応版も手元にはありますが、動作確認ができないため、配布はしておりませんが、ご自身の責任において使用いただくことを条件に無償で提供しますのでご相談下さい。
※追記) 多言語対応版も配布を開始しました。
iPhoneのChromeで戻るボタンで戻った際にフォーム入力データがクリアされてしまう
ボタンに画像を使用したい
送信ボタンや戻るボタンに「input type="image"」を使用すると確認画面や送信メール内に「x」、「y」と座標が表示されてしまいます。
そのためボタンに画像を使用したい場合にはCSSにて背景画像として指定することで対応下さい。
参考までに記述例を掲載します。
もちろん外部CSSでもOKです。分かりやすいようあえてタグに直接書いています。幅や高さ、マージン、画像のパスなどは状況に合わせて変更ください。
送信メールのフッタ(署名)を管理者宛のメールでは非表示にしたい
mail.phpの以下の箇所(1箇所しかありませんので探して(検索)みてください)
$adminBody = mailToAdmin($_POST,$subject,$mailFooterDsp,$mailSignature,$encode,$confirmDsp);
赤字で示した「$mailSignature」を以下のように「""」(ダブルクォーテーション2つ)に変更して下さい。
$adminBody = mailToAdmin($_POST,$subject,$mailFooterDsp,"",$encode,$confirmDsp);
これだけでOKです。
送信ボタンの連続クリック(連打)による多重送信を回避(防止)したい
メールの件名にフォームの特定の項目の入力データ、または選択データを反映したい
以下の記述でフォーム側の特定の項目の内容を出力することができます。
$_POST['フォーム側のname属性の値']
「フォーム側のname属性の値」とは
name="○○" の○○部分です。
たとえばフォーム側のname属性の値が「名前」であれば
$_POST['名前']
とすれば入力された名前が出力されます。
これを利用します。
mail.phpの件名の設定箇所で以下のように記述することで実現できます。
例
$subject = "【".@$_POST['名前']."】 ホームページのお問い合わせ";
この場合たとえば名前に「佐藤太郎」と入力されたら、
【佐藤太郎】 ホームページのお問い合わせ
という件名になります。
前後のドット「.」はPHP上の連結を意味します。(必須です)
先頭の@マークは万が一未選択であった場合でもNoticeエラーが出ないためのものです。
動作には影響しません。
記述がもし間違っていれば確認画面すら表示されませんので、動作確認ですぐに気付けます。
逆に正常に動作し、件名にも反映されていればOKということですね。
自動返信メールの送信元アドレスを管理者のアドレス以外のアドレスを設定したい
デフォルトではmail.phpで設定した管理者のメールアドレスがお問い合わせフォームのメール送信先、及びユーザー宛の自動返信メールの送信元アドレスとなっております。
これをユーザー宛の自動返信メールの送信元アドレスのみ変更したい場合です。
mail.php内の以下の記述を探して下さい。
※フリー版のデフォルトですと200行目付近です。(1箇所しかないのでファイル内検索すればOKです)
$reheader = userHeader($refrom_name,$to,$encode);
↓以下のように設定するだけです。
$reheader = userHeader($refrom_name,'abcde@test.jp',$encode);
$toの部分を送信元としたいメールアドレスに変更するだけです。
'abcde@test.jp'
のようにメールアドレスは必ずクォーテーションで囲んで下さい。(でないと即エラーとなります)
これで自動返信メールの送信元アドレスはここで設定したメールアドレスとなります。
※送信元アドレス(from)、及び返信先アドレス(Reply)ともこちらのアドレスが反映されます。
尚、お問合わせのメールは今までどおり管理者用のメールアドレスに送信されます。
必ず送信テスト実施して問題のないことを確認してください。
管理者宛のメールの送信元アドレスを特定のメールアドレスに固定したい
※注意 2021/10/26のアップデートにて管理者宛メールの送信元アドレスもmail.phpの送信元アドレス($from)で設定したメールアドレスになるように改修したため、2021/10/26以降にダウンロードしたものはこの修正は不要です。$fromで設定すればOKです。
管理者宛のメールはデフォルトではユーザーのメールアドレスが送信元アドレスとして設定されます。
これを特定のメールアドレスに変更する方法です。
たとえば迷惑メールに振り分けられる場合などの対策として考えられます。
修正方法
mail.phpの以下の記述を探して下さい。一箇所しかありませんのでファイル内検索すればすぐに見つかります。
$header="From: $post_mail\n";
↓以下のように変更するだけです。
$header="From: abcde@sample.jp\n";
$post_mailの部分を送信元としたいメールアドレスに変更するだけです。
これで管理者宛のメールの送信元アドレスがここで設定したアドレスとなります。
これをやっても返信先(reply)はユーザーのメールアドレスになりますので、運用上の影響はありません。
尚、「管理者宛のメールで差出人を送信者のメールアドレスにする」の設定箇所が
$userMail = 1;
となっている必要があります。
さすがにやるとは思いますが、
修正を行ったら必ず送信テストなどで問題がないことを確認して下さい。
送信メールの内容を見やすさのため改行を追加したい(可読性アップ)
送信メールの内容はデフォルトでは以下のようになっています。
【 お名前 】 佐藤太郎
【 電話番号 】 ●●-●●●●-●●●●
【 メールアドレス 】 ●●●●@●●.jp
これをたとえば以下のようにしたい場合や
【 お名前 】 佐藤太郎
【 電話番号 】 ●●-●●●●-●●●●
【 メールアドレス 】 ●●●●@●●.jp
以下のようにしたい場合ですね。
【 お名前 】
佐藤太郎
【 電話番号 】
●●-●●●●-●●●●
【 メールアドレス 】
●●●●@●●.jp
修正方法
mail.phpをエディタソフトなどで開き、以下の記述(関数)を探して下さい。
「送信メールにPOSTデータをセットする関数」
その関数内の以下の記述を探して下さい。
※mail.php内で一箇所しかありませんので、ファイル内検索すればすぐに見つかります。
$resArray .= "【 ".$key." 】 ".$out."\n";
"\n"がメール内での改行を意味しますので、これを追加することで実現できます。これだけです。
変更例1.
$resArray .= "【 ".$key." 】 ".$out."\n\n";
とした場合は以下となります。
──────────────────────
【 お名前 】 佐藤太郎
【 電話番号 】 ●●-●●●●-●●●●
【 メールアドレス 】 ●●●●@●●.jp
──────────────────────
変更例2.
$resArray .= "【 ".$key." 】 \n".$out."\n\n";
とした場合は以下となります。
──────────────────────
【 お名前 】
佐藤太郎
【 電話番号 】
●●-●●●●-●●●●
【 メールアドレス 】
●●●●@●●.jp
──────────────────────
尚、項目名を囲んでいる【と】も自由に変更いただけます。
例 ■お名前 など。
修正を行なったら必ずテスト送信を実施して問題のないことを確認して下さい。
PHPはhtmlなどと異なり、1文字でも記述ミスがあると動作しません。(エラーや画面真っ白など)
※そのためテスト送信ですぐに気付けます。
以上です。
特定の項目の文字数を制限したい(コメント欄の文字数を制限したいなど)
スパムやいやがらせ、営業メールなどを防止したい場合などに有効です。
以下手順で導入できます。
1,mail.phpの適当な箇所(送信先設定などの上部あたりでOKです)に以下をコピペ下さい。
2,「お問い合わせ内容」の箇所を対象としたい項目のname属性の値に変更して下さい。(2箇所あるので注意!)
3,「250」の箇所が上限としたい文字数です。自由に設定下さい。(この場合、251文字以上でエラー表示となる)
4,もしUTF-8版以外を使用している場合は「UTF-8」の箇所をお使いの文字コードに変更下さい。
以上です。
日本語(全角)でも半角文字でも1文字は1文字としてカウントされます。改行は無視されます。(単純に文字数だけをカウントします)
必ずテスト送信を実施して問題のないことを確認して下さい。(上限を超えた場合の挙動も確認下さい)
WordPressに導入できるかどうか
結論から言ってしまうと可能です。ただこの質問への回答は性質上、とても難しいです。
どのように導入するのかにもよりますし、
人によっても出来る、出来ないがあるためです。(WPも含めたその方のスキルにも依存します)
そのため、「出来ることは出来るが、あなたが出来るかどうかまでは分からない」という回答になってしまいます。
実際にWordPressに組み込んでらっしゃる方は実際にいます。
テーマファイルに組み込んで運用されています。
ただ、最も手っ取り早いことはWordPressとは切り離して設置することです。
あえてWordPressに無理に組み込む必要はないとも思っています。
WordPressのディレクトリとは別に1つのディレクトリを作成し、そこにフォーム関連のファイルを設置すればOKです。
既存のサイトデザインを反映したい場合はWordPress側のページ(どこでもOK)のソースをまるっとコピペすればOKです。
WordPressは基本的にソース内のパスが絶対パスとなっているため設置場所(階層)を問いません。
ただこの場合、当然WordPressのテーマを編集してもフォーム側には反映されません。
それでは困る場合はWordPress側のテーマと連携させます。
方法は至って簡単です。
フォームのファイル内の最上部に以下の1行を追加すればOKです。
これでそのファイル内でWordPressタグ(テンプレートタグ)などが使えるようになります。
<?php require('../wp/wp-blog-header.php');?>
※パスは状況に応じて適宜変更下さい。(wp-blog-header.phpを読み込めばいいだけです)
※ファイルの拡張子は.phpとして下さい。(でないとPHPが動作しません)
あとは普通に「get_header();」とかを記述すればヘッダーなどを読み込めます。
個人的にはWordPressのテーマ側に直接組み込むよりも、
このほうが合理的かつ安全だと思っています。
※WP側に問題が起きた際にフォームも巻き添えを食らう可能性もありますからね。
(お問い合わせフォームなどはそれほど重要だと思いますので)
名前やふりがなに敬称(様)を付けたい(確認画面、送信メールで)
配布版のデフォルトで付いている機能で対応可能です。
name属性の値を以下のようにするだけです。
※後ろに[][ 様]をつけるだけです。
例
name="お名前[][ 様]"
name="ふりがな[][ 様]"
これで末尾に「様」が付きます。
自動返信メールで「●●様」ではなく「Dear ●●」と表示したい。
mail.phpの以下の記述を探して下さい。1箇所しかありませんのでファイル内検索で見つかります。
if(isset($arr[$dsp_name])) $userBody = h($arr[$dsp_name]). " 様\n";
↓以下のように変更して下さい。
if(isset($arr[$dsp_name])) $userBody = 'Dear '.h($arr[$dsp_name])."\n";
これで「Dear ●●」と表示されます。
入力がなかった(空)の項目を送信メール、確認画面で非表示にしたい
ソースコードの修正が必要になります。
以下に修正内容を記しますので試してみて下さい。
修正はあくまでもご自身の責任において行ってください。
また必ずテスト送信を行って下さい。
送信メールでのみ非表示としたい場合(確認画面では表示されます)
mail.php内以下の箇所
350行目付近にある(行数はプログラムのバージョンなどにより異なりますので以下文言で探して下さい)
//送信メールにPOSTデータをセットする関数
を探して下さい。
この関数の中の以下の箇所
if($out != "confirm_submit" && $key != "httpReferer") {
を以下に
if($out != "confirm_submit" && $key != "httpReferer" && $out != ''){
これで入力があった内容のみ送信されます。
確認画面、送信メール双方で非表示にしたい
mail.phpの389行目付近以下の関数の箇所(行数はプログラムのバージョンなどにより異なりますので以下文言で探して下さい)
//確認画面の入力内容出力用関数
この関数の中の以下の箇所
を以下のように上下に「//これを追加」の行を追記して下さい。(上下に1行ずつ追加してます)
これだけです。
万が一なんらかの不具合があった場合にはすぐに戻して下さい。
記述が間違っている可能性があります。一字一句間違わないようご注意下さい。
※尚、旧バージョンの場合には該当行がありませんので、2014/1/26以降配布のプログラムのみ対象となります。
管理者宛メールの送信元アドレス(From)をユーザーのメールアドレスにしたい
【重要】2021/10/26以降にダウンロードいただいたもの(ver2.0.1以降)が対象です。それ以前のバージョンの場合はここの内容は無効です。
まず、2021/10/26のアップデートで管理者宛のメールの送信元アドレス(From)が固定のメールアドレス(mail.php内で設定している送信元メールアドレス($from="●●"))となるように改修しました。
※それまでは管理者宛メールの送信元(From)はユーザーが入力したメールアドレスとなっていました。
改修した理由はユーザーが入力したメールアドレスを送信元にしてしまうと、
「なりすまし」と判定されて
メールが届かないケースが出てきたためです。
昨今はスパムに対して非常に厳しくなってきております。
ユーザーのメールアドレスを送信元にすることは、
ユーザーのメールサーバーを経由しているわけではないので、
完全に「なりすまし」なのです。
実際には特に問題ないケースが多いのですが、
メールが届かないということは確実に回避しなければならないため、
アップデートにてそのように改修しました。
利便性は若干損なわれますが、
メールが届かないよりはいいよね?
という判断です。
ご理解の程お願い申し上げます。
尚、送信元(From)は固定のメールアドレスになりますが、返信先(Reply)はユーザーのメールアドレスになるので、
返信作業には影響ありません。
まずはこういったことを前提として、
その上でどうしても以前のバージョンの仕様のように送信元(From)をユーザーのメールアドレスとしたいという場合は以下の方法で可能です。
※トラブル防止のためにもクライアントのフォームで実施する場合は事前にクライアントにそういったリスクがあることを伝えたほうが無難です。
■管理者宛メールの送信元をユーザーのメールアドレスにする手順
mail.phpの以下の記述を探して下さい。1箇所しかないのでファイル内検索をすればすぐに見つかります。
$header="From: $from\n";
これを以下のように変更するだけです。
※$fromを$post_mailとするだけです。
$header="From: $post_mail\n";
これで完了です。念のためテスト送信を実施して反映されていることを確認して下さい。
ご利用規約
・無料版プログラムはフリーウェアです。ただし、著作権は放棄するものではありません。
・プログラムの著作権表示リンク(ページ下部にある当サイトへのリンク)を無断で削除することはできません。
(一律2,000円+消費税の削除依頼をいただいた場合を除く)
・プログラムの再配布、再販売は禁止です。
※ただしクライアントへの納品などでシステム費用、設置費用として請求されるのは問題ありません。
・プログラムによって何らかの不利益、損害が生じても一切の責任を負いません。
あらかじめご了承の上ご使用ください。
もし何らかのトラブルがあった場合には、ご相談いただければ解決策が見つかるかもしれません。
(クライアントへの原因の説明など)
・プログラムは全ての環境(サーバー)での動作を保証するものではありません。
・改変等は自由ですが、自己責任でお願いします。
・有料版をご購入いただいた場合、初期不良を除き、ご使用後の返金には応じ兼ねます。
・有料版(著作権リンク削除含む)は1サイト(同一ドメイン)内であれば複製の上で複数利用可能です。
2サイト目以降は都度サイトより購入申込みが必要になります。
※サブドメインはその性質上、別サイト(別ドメイン)とみなします。
ダウンロードいただいた時点で利用規約に同意したものとみなされます。
カスタマイズ、設置代行について
カスタマイズ(改造等)方法などのサポートは行っておりません。
カスタマイズや仕様変更、設置代行などは2,000円~の有料にて承ります。
フォームページとセットでの設置代行も承ります。※4,000円程度(項目数により変動有り)
ご依頼・お見積もりの詳細はこちらです
セキュリティ対策について
メールフォームプログラムのセキュリティ対策についてはフリー版と同じになりますので、フリー版のページをご参照下さい。
更新履歴
主な更新履歴はフリー版の更新履歴と同じになりますのでご参照下さい。