PHPにはmb_send_mail関数という、e-mailを送るための関数があります。
その関数を用いてもメールが送信できない場合の対処法をまとめました。
メール送信、受信が上手くいかない場合に参考にしてください。
mb_send_mailが届かない場合の対処法
対処法は大きく分けて3つです
- コーディングエラーの場合
- サーバーが試用期間の場合
- fromに対してエラーがある場合
それぞれを細かく見ていきましょう。
対処法①コーディングエラーの場合
当然ですが、コーディングエラーがある場合はメールは送付されません。
PHPの場合はメールを送る処理(お問い合わせフォームなど)を行うと「デバッグモード」により、エラーの個所を教えてくれます。
その記載を見ながら、少しづつコードを修正して、動くようにしておきましょう。基本的には開発段階で起こることです。
ちなみにですがローカル環境ではメールは基本送れませんので注意してください。
テスト環境などをエックスサーバーなどで契約して、試してみるのが一番です。
もしもテスト環境でメールが動いているなら、本番環境で動かない場合に、このコーディングエラーが原因になることはないでしょう。
次の原因を参照してみてください。
対処法②サーバーが試用期間の場合
本番環境のサーバーがまだ試用期間の場合、サーバー会社によってはメール送信システムを制限していることがあります。
そういった場合にはmb_send_mailを使用してもメールは送れません。
また困ったことにエラーも出ませんし、エラーのメールを受信することもありません。
見落としやすい点ですので、サーバーの契約プランが試用期間ではないか、確認してみてください。
対処法③fromに異常がある場合
こちらは特殊なパターンで、専用のメールアドレスには送信できるものの、Gmailなどのフリーメールには送信できない場合です。
Gmailなどのフリーメールは誰でもいくらでも取得できるために、セキュリティが強めになっています。
mb_send_mailにはfromを指定する部分があるのですが、ここが未指定だったりすると受信できません。
こちらもエラーは出ずにエラーメールも受信しないので、やっかいなケースとなります。
しっかりとmb_send_mailの引数を確認して、エラーに対処していきましょう。
mb_send_mailの詳細は以下の公式リファレンスで確認できます。
エラーを解除して、メールを送れた時の達成感は感無量です。
諦めずに、頑張ってください。