【PHP】mb_send_mailが届かない場合の対処法

  • 2021年7月2日
  • PHP
PHP

PHPにはmb_send_mail関数という、e-mailを送るための関数があります。
その関数を用いてもメールが送信できない場合の対処法をまとめました。
メール送信、受信が上手くいかない場合に参考にしてください。

mb_send_mailが届かない場合の対処法

対処法は大きく分けて3つです

  1. コーディングエラーの場合
  2. サーバーが試用期間の場合
  3. fromに対してエラーがある場合

それぞれを細かく見ていきましょう。

①コーディングエラーの場合

当然ですが、コーディングエラーがある場合はメールは送付されません。
PHPの場合はメールを送る処理(お問い合わせフォームなど)を行うと
「デバッグモード」により、エラーの個所を教えてくれます。

その記載を見ながら、少しづつコードを修正して、動くようにしておきましょう。

基本的には開発段階で起こることです。
ちなみにですがローカル環境ではメールは基本送れませんので注意してください。
テスト環境などをエックスサーバーなどで契約して、試してみるのが一番です。

少なくとも、テスト環境でメールが動いているなら、本番環境で動かない場合、
このコーディングエラーが原因になることはないですね。

②サーバーが試用期間の場合

本番環境のサーバーがまだ試用期間の場合、
サーバー会社によってはメール送信システムを制限していることがあります。

試用期間で何度もメールを送れると、悪用される可能性もありますからね

そういった場合にはmb_send_mailを使用してもメールは送れません。
また困ったことにエラーも出ませんし、エラーのメールを受信することもありません。
見落としやすい点ですので、サーバーの契約プランが試用期間ではないか、確認してみてください。

③fromに異常がある場合

こちらは特殊なパターンで、専用のメールアドレスには送信できるものの、
Gmailなどのフリーメールには送信できない場合です。

Gmailなどのフリーメールは誰でもいくらでも取得できるために、セキュリティが強めになっています。
mb_send_mailにはfromを指定する部分があるのですが、ここが未指定だったりすると受信できません。

こちらもエラーは出ずに、エラーメールも受信しないので、やっかいなケースとなります。
しっかりとmb_send_mailの引数を確認して、エラーに対処していきましょう。
mb_send_mailの詳細は以下の公式リファレンスで確認できます。

PHPマニュアル_mb_send_mail

エラーを解除して、メールを送れた時の達成感は感無量です。
諦めずに、頑張ってください。