このサイトで配布している「レスポンシブ・メールフォーム」でメールが届かない場合にチェックすべきポイントを解説します。
まず大前提として、基本設置方法のページで解説している通り、初期状態のままサーバーにアップロードして送信テストをすることが重要です。(config.phpで自分のメールアドレスだけは設定すること)
既存のページに組み込んだ後では原因を特定するのがより困難になるため、初期状態でお試しください。
なお、このページでの解説は自動返信メールはオンになっている前提で進めていきます。(初期状態ではオンです)
このページの解説で誤解が生じないように、以下のように用語を定めておきます。
【管理者メール】
サイト管理者に届くメールのこと。つまりconfig.phpの中の「自分のメールアドレスの設定」で設定したメールアドレスに届くメール。
また、このメールアドレスのことを以下からは「管理者メールアドレス」と呼びます。
【自動返信メール】
フォームに入力・送信した人に届くメールのこと。
1、問題解決のために知っておくと良い基礎知識
このメールフォームプログラムにおけるメール送信の流れを大ざっぱに図で解説しておきます。
全体の流れを知っておくと、どこが原因でメールが届かなかったのかをイメージしやすくなるでしょう。
1、フォームに入力をして送信ボタンを押すと、メールフォームプログラム(PHP)から直接メールが送信されます。
2、送信先(サイト管理者やフォーム入力者)の受信サーバーにメールが届きます。
3、サイト管理者やフォーム入力者は自分の受信メールサーバーのメールを閲覧する。(ついでにダウンロードする場合もあり)
2、フォーム送信時に「エラーが起きました。」と表示され、サンクスページに移動しない場合
フォームに入力をして送信ボタンを押した後に「エラーが起きました。」という警告ウインドウが表示される場合は、メールの送信処理に失敗しています。
管理者メール、自動返信メールのどちらかの送信処理でエラーが発生したと考えられます。
しかし、このメールフォームプログラムでは上記2つのメールの送信処理方法は同じなので、片方だけ失敗するという可能性は低いです。
おそらく両方とも失敗し、どちらにもメールが届かないケースがほとんどでしょう。
この症状が起きた場合のチェックポイントは以下になります。
- サーバーでSendmail(メールの送信機能)が使えるかどうか確認する。
(XAMPPのようなローカル環境の場合は別途設定が必要な場合あり) - メールの送信機能が制限されていないか確認する。
(サーバー契約がお試し期間中になっているなど)
お使いのレンタルサーバー会社に上記の2点を問い合わせてみると良いでしょう。
3、サンクスページは表示されたが、管理者メールまたは自動返信メールの両方が届かない場合
このメールフォームプログラムの仕様上、サンクスページが表示されたということはメールの送信処理は正常に完了しています。
この場合、管理者メール・自動返信メールの両方の送信に成功していることを意味します。
もしどちらかでも送信に失敗した場合は、サンクスページに移動しない仕組みになっているからです。
この症状が起きた場合のチェックポイントは以下になります。
- 受信メールアドレス側で迷惑メールフォルダに振り分けられていないかを確認する。
- 受信メールアドレス側で受信拒否されていないか、フィルタ設定を確認する。
- 管理者メールアドレスに英文のエラーメールが届いていないか確認する。(メールフォーム本体のバージョン8.0以降限定)
- サーバーで使用しているドメインと同じドメインのメールアドレスをconfig.phpの管理者メールアドレスに設定し、フォームの送信テストをしてみる。(詳細は後述)
4、サンクスページは表示されたが、サイト管理者またはフォーム入力者のどちらか片方にメールが届かない場合
前章で解説した通り、サンクスページが表示されたということはプログラム上でのメールの送信処理は正常に完了しています。
そして、このメールフォームプログラムでは入力されたメールアドレスによって処理内容が変わるということはありません。(書式チェックのみ実施)
つまりどちらか片方に送信されたのなら、もう片方にも同じように送信されています。(前述の通り、メール送信処理方法も同じなので)
この症状が起きた場合のチェックポイントは以下になります。
- 受信メールアドレス側で迷惑メールフォルダに振り分けられていないかを確認する。
- 受信メールアドレス側で受信拒否されていないか、フィルタ設定を確認する。
- 管理者メールアドレスに英文のエラーメールが届いていないか確認する。(メールフォーム本体のバージョン8.0以降限定)
- サーバーで使用しているドメインと同じドメインのメールアドレスをconfig.phpの管理者メールアドレスに設定し、フォームの送信テストをしてみる。(詳細は後述)
- 届いたほうのメールアドレスをconfig.phpの管理者メールアドレスに設定し、フォーム入力のほうでもそのメールアドレスを入力し、管理者メール・自動返信メールの2通が届くか確認する。
5、サーバーのドメインと管理者メールアドレスのドメインを同じにしたほうが良い理由
メールソフト(クライアント)やWebメールサービス(Gmailなど)によっては、メールを受信する際になりすましメールではないかのチェックが行われます。
その際、送信元メールアドレスのドメインと送信元サーバーを照合し、違っていたら受信拒否するケースがあります。
特にGmailは昔からそのあたりのセキュリティ設定が厳しいため、config.phpで設定する管理者メールアドレスをGmailのメールアドレスにするとこの症状が起きる可能性があります。(2022年に入ってからさらに厳しくなったようです)
ですので、なるべく可能なら以下の2つは同じものにしたほうが良いでしょう。
- メールフォームを設置したサーバーのドメイン
- config.phpで設定する管理者メールアドレスのドメイン
メールが届かないという症状が発生した場合は、とりあえず一時的にでも上記のように設定してフォームの送信テストをしてみて下さい。
もしそれで管理者メール・自動返信メールの両方が届いたとしたら、先ほどまで届かなかった原因は受信メールアドレス側にあるということがわかりますので、迷惑メールフィルタの設定を弱めるなどの設定をしてみて下さい。
このような感じで原因の切り分けができるようにテストをすることが問題解決のコツです。
【追記】
メールフォーム本体のバージョン8.1から、なりすましメールの判定を受けてメールが受信できない時の回避用の設定を追加しました。
Gmailを使用していてどうにも受信できない方は、この機能を使用して回避することが可能です。