お問い合わせフォームを設置したけどメールが届かない!メールが送信できない時に確認すること!

WordPressではなく、無料のhtmlテンプレートなどについているお問い合わせフォームを設置してみたけどメールが届かずどうしたものやら、といった時に確認したいことを書いてみたいと思います。

スポンサーリンク

前提事項

この記事はWordPressのプラグインなどを入れてメールを送信してみたけど送れないという場合の記事ではありません。
無料のお問い合わせフォームのCGIなどをダウンロードして使ってみたけど、うまくいかないという場合、多少参考になることもあるかもしれませんが、まずはダウンロードしたページの使用方法、FAQなどを熟読しましょう。その方が問題が解決することが多いと思います。

この記事は、

【Bootstrap】htmlテンプレート「Agency」のお問い合わせフォームのカスタマイズ!
Bootstrapのhtmlテンプレート「Agency」のお問い合わせ部分のカスタマイズについて書いてみたいと思います。 「Agency」とは 「Agency」は、Bootstrapを利用して作られた1ページものの静的な...

など無料のhtmlテンプレートについている簡易なお問い合わせフォームを設置してみたけれど、メールが全く届かない場合に確認しておくことを書きたいと思っています。
ちょうどこの【Bootstrap】ベースのhtmlテンプレート「Agency」でご質問をいただいたので、コメントにほぼ書いているのですが、それをもう少し詳しく書いておこうといった主旨で、この記事を書こうと思っています。

荒技を思いつきましたので最初に

そもそもこの記事は、メールが送れない原因を探すためにチェックしたいことを書くつもりですが、ちょっとめんどくさいという場合が多いと思います。
自分の修正方法などにミスがある場合なら、話は簡単ですが、わりとレンタルサーバーが原因のこともある可能性があります。
それをいちいち確認していくのって、、と思いますよね。
まずはレンタルサーバー側での原因というのを排除する作戦です。
それはほかのレンタルサーバーを借りてみて、チェックする方法です!
現在は有料のレンタルサーバーでも試用期間のようなものがだいたいあります。
なので、試しにほかのレンタルサーバーを借りて、htmlを入れてみて動くなら、自分が使っているレンタルサーバーに問題が。
動かないようなら、自分のソースにミスがあるんだろうか、と多少当たりをつけることができると思います。
自分が修正したphpをいくら直しても、そもそも借りているレンタルサーバーではそのPHPが動かないなら、どうしようもないですよね。。。
例えば【Bootstrap】ベースのhtmlテンプレート「Agency」に関して言えば、この知りたいねっとではエックスサーバーを使っています。
なので、エックスサーバーなら「お問い合わせフォーム」は確実に機能します。それは実際に使用して確認していますし、メールソフトの画面も表示してお問い合わせフォームのカスタマイズについて書いているので、間違いないです。
エックスサーバーでは10日間無料でお試しをすることができます。
無料でお試しというのは、このように自分が使いたいものが機能するか、使用感など確認するために存在しています。
なので、それを利用することについてなんら問題はないと思います。
もしもアップしてうまくいくなら、自分の修正はミスはないし、そのままエックスサーバーを利用したほうが話は早いし、労力もかからずスッキリするような気がします。
もちろんエックスサーバー以外にもレンタルサーバーはたくさんありますので、ほかでもよいと思いますが、「Agency」に関しては確認済ということです。

PHPは使える環境ですか?

だいたい無料のhtmlテンプレートについている「お問い合わせフォーム」は、PHPが多いと思います。
あなたが使っているレンタルサーバーはPHPが使える環境ですか?
お金を払ってレンタルサーバーを借りている場合、たいていはPHPが使えるかなとは思います。
でも使えないサーバーもあると思います。無料でも使える場合も多いと思います。
まずはレンタルサーバーのサイトなりで確認してください。
簡単に確認する方法は、テキストエディタでmail.phpなど名前は自由ですが、phpファイルを作り

<?php
phpinfo();
?>

を入れて、サーバーにアップします。
そしてこのmail.phpにアクセスします。
http://自分のサイトのアドレス/mail.php
です。PHPが使える環境であれば下記のようなページが表示されると思います。

表示されるなら、まずはPHPが使える環境である、OKとなります。

sendmailは使える環境ですか?

mail関数でのメール送信の場合「sendmail」がインストールされていないとメールが送れないと思います。
こちらの確認も上記の
http://自分のサイトのアドレス/mail.php
で確認できます。

PHPをアップした際のパーミッション

PHPをアップした際、パーミッションを間違えているということはありませんか?
お使いのレンタルサーバーによって違うと思いますが、
エックスサーバーでは644です。
ロリポップは604みたいです。

アクセス制限をかけていませんか?

ふと思い出しましたが、オープン前のサイトはアクセスを制限するためにベーシック認証やIP制限をかけていることが多いと思います。
その場合、メールが送れないことがあると思います。
いったんアクセス制限を解除して再度試してみてください。

FromとToが同じメールアドレスだとエラーになる

phpファイルの中に、fromを設定する場所があると思います。送信元ですね。
ちなみにそのアドレスは正しく入れていますか?自分のアドレスです。
当たり前ですが、自分のアドレスを正しく記載していなければ自分のアドレスへメールは届きません。
お試しメールを送ろうとして、送信元のアドレスとして記載しているアドレスを、フォームの中に入力していることはありませんか?
その場合、メールが届かないというエラーが起こることがあります。

メールサーバーがブロックしている

お問い合わせフォームからの送信は、プログラムからの送信という感じなので、スパムという扱いでスマホなどでは設定によってブロックされることもあると思います。
ちゃんとお問い合わせフォーム自体は機能しているけれど、メールが途中でブロックされて届いていないということはありませんか?
試しに違うメールアドレスを使ってみるなど、してみてください。

phpの保存形式を間違えている

こちらはphpの修正のミスになります。
保存形式を間違えると、メールが機能しないことがあると思います。
「Agency」はUTF-8N、CR+LFで問題ありませんでした。
これを確認するには、何も修正せずただphpを開き、保存形式を確認してみます。
その保存形式と一緒にすればうまくいく場合も多いと思います。
例えばTeraPadで確認すると
新規作成で画面が開いた状態で、さきほどのmail.phpをポンっと入れてみましょう。そうするとmail.phpは表示されると思います。
もしくはファイルからmail.phpを開いてみましょう。

ファイルから→[文字/改行コード指定保存]を押します。

mail.phpはUTF-8N、CR+LFになっています。

これで保存すればUTF-8N、CR+LFです。
ちなみにまた修正して保存する際も[文字/改行コード指定保存]で確認してから保存するほうがよいと思います。

メールが振り分けられているのに気付かない

ごくたまにあることで、メールソフトで設定していたフォルダの条件になぜかヒットしてしまい、知らないうちに、フォルダ内に勝手に入っていることはありませんか?
例えば迷惑メールフォルダとか。例えば仕事用のフォルダをみたらメールがいた!なんてことはありませんか?
几帳面な人は、たくさんのフォルダを作り、それぞれのメールを振り分けていることもあると思います。
まさかとは思いますが、そんなフォルダの1つに入り込んでしまっていて気づいていなかったということも念のため確認しておきましょう。

さいごに

ちなみにフリーのCGIを落としてきて、フォームを設置する場合もあると思いますが、その際に反応がない場合の多くが、パーミッションで解決するかもしれません。
自分の場合はほぼパーミッションで解決しました。
すべてのプログラムのパーミッションを確認してください。
すべてというのはフォルダから、htmlから画像からすべてです。
FTPでアップする際に、パーミッションがなぜか同じ状態でアップされるという事態がたまに発生することもあると思います。
その場合には画像なども表示されないということがあって、わりと気付きやすいかもしれませんが、とにかくパーミッションは常に疑いましょう。
パーミッションはCGIが置いてあるところに指示がある場合が多いと思います。

基本的に、無料のhtmlテンプレートを含め、複雑なことをさせる場合は少なかったりします。
アドレスを自分のに変更するとか、サンクスメールの文面を変えるとか、カスタマイズはそんな感じではないでしょうか?
あとは保存形式。これを何度も直してアップしてを繰り返してください。本当に保存形式はあっているかどうか。

ただ自分の修正、カスタマイズよりも、自分のサーバーの環境、設置方法に問題がある場合のほうがはるかに多いと思います。
せっかくお問い合わせフォームを設置したのに、メールが全く届かなくて、しょんぼりしている方もいると思います。
原因は、ここにあげた以外にもあるかもしれません。
けっこうハマると解決に時間を要することも多いと思います。
それぞれのサーバーの環境によっても状況が違いますので、これ!という原因をあげることは難しいです。
ご自分で原因の特定をし、それを見直していくしかありません。
一般的なアドバイスしかできませんが、
どうかtrial and errorでこつこつ頑張ってください!

コメントをどうぞ