メールフォームを設置して、実際にメールが飛ぶかどうかのチェックをしていたところ、メールが届かないことがありました。調べて解決できましたのでレポートいたします。
メールフォームの仕組みは、フォーム内容を管理担当者へ送信した後、投稿者にも自動返信する仕組み。
管理担当者へは必ず届くのですが、投稿者への自動返信が届いたり、届かなかったりし、迷惑メールフォルダにも入っていない。
なんとも不思議な現象です。
投稿する内容によって現象が変わる
まずちゃんと届くときと、届かない時の法則性がないかを調べてみました。
すると、特定欄に入力した場合のみ現象が発生していました。
そこで、メールフォームの内部処理でエラーが発生していないか調べてみましたが、メール送信処理まで正しく動作していました。
メールサーバーを疑ってみた
テストで使っているメールのサーバーを調べてみたところ、現象が発生しているときはサーバーに届いていないようでした。
ここで疑問がわきました。
メール送信処理は行われていて、メールサーバーのほうに届いていない。
はたして、そんなことがあるのかな?と。
少なくとも、現象が発生しないときは、受信側のメールサーバーに届いているので、送信処理は実行できている。
そしたら、受信側で何か発生しているのだろうか?
いろいろテストして分かったこと。
ここで、メールフォームのテストに使っている、管理担当者側のメールと、テスト投稿者用のメールを逆にしてみたところ、今度は管理者側のほうにメールが届かないことが発生し、投稿者側の自動返信はちゃんと届くように現象が変わりました。
それでピンときました。
特定のメールに送信した時だけ現象が発生しているのではないか?
早速該当メールのメールサーバーのスパム設定を見直してみたらビンゴでした。
該当のメールは、普段テスト用に使っているものですが、スパム設定を「最強」にし、少しでもスパム判定した場合は、「サーバーから即削除設定」になっており、どうやら投稿内容が変わると、最強スパム設定のため、サーバーから即削除されていました。
だから、特定欄に入力したときに現象が発生していました。
これはこれでよい経験として
原因は、テストで使っていたメールの設定にあったのですが、この原因にたどり着くまで、プログラム側や、サーバー側などあらゆるものを調べてやっと見つけました。
プログラムの場合は、原因個所は削減法で絞っていけば場所特定まではたやすいのですが、メールフォームの場合は、プログラムに原因があるとも限らないため、サーバー、メール設定、パソコンのメールソフトまで調べていかねばなりませんでした。
しかし、今回のことで教訓を一つ得ました。
メールフォームのテストをする場合は、少なくともドメインとサーバーの違うメールでも試さなければならないのだと。
せっかくの教訓であったため、ここに記録します。