×

iCloudメールにメールが届かない PHP mb_send_mail

メールフォームからのメール送信で、GmailやHotmailなどにはメールが届くのに、AppleのiCloudメールにのみメールが届かない現象が起きたので備忘録として記事にしました。

メールが届かない理由

メールが届かない理由は様々です。

  • 宛先が間違っている
  • 送信先のメールボックスが容量オーバーしている
  • スパムデータベースに登録されている
  • 受信拒否されている
  • そもそも送信できていない

などが挙げられます。
個人的にメールが届かない事象が発生し、調べた結果、多いのは「宛先が間違っている」「スパムデータベースに登録

メールログで原因を確認

メールが拒否された場合、メールログに500番代のエラーで大体の理由が記載されていることがあるので、サーバー管理者に問い合わせて確認すれば、原因の究明が速くなります。

今回iCloudメールに届かなかった理由は?

今回は、GmailやHotmailなどのフリーメールには届くのにiCloudにのみ届かない事例でした。
エラーメールも返ってきていないので、完全に受信拒否されているのか?理由が不明でした。

そこでスパムデータベースを確認、いくつか登録されていましたが、管理者でないと解除できない仕様のものだったので、今回は見送り。

簡単なメールフォームを作成し、同じサーバーからメールをテスト送信で、「メールが届きました」。
IPやドメインが拒否されているわけではないのか?本番のメール内にスパムと判定されるような内容があるのか。

iCloudに「届くメール」と「届かないメール」をGmail宛に送信しメールのソースを見比べました。
メールのソースを確認するにはMacの標準メールソフトの場合は「表示」→「メッセージ」→「ソース」で確認できます。

iCloudにメールが届かない原因がわかりました

メールが届かない原因が原因がわかりました。
mb_send_mailの第5引数にリターンパスを設定しているのですが、この部分で二重に「-f」を付与していました。この状態だとリターンパスは正常に認識しませんが、その他の情報は問題ないのでGmailやHotmailには送信可能でしたが、iCloudに不達となるようです。

リターンパスとは

宛先に不備があったり、送信先サーバーから拒否されたり等「エラー」があった際の返信先メールアドレスとして指定するメールアドレスのことです。

設定はエラーメールを受信したいメールアドレスの頭に「-f」を付与します。

Apple iCloudは他のメールサーバーに比べ厳しかった

リターンパスの設定の不備でiCloudに拒否されていたのですが、リターンパスに設定しているメールアドレスが間違った状態なのでエラーメールを受信することもできず、いろいろ試し時間がかかりました。

結果は「バグ」でした。
リターンパスの設定には気を付けましょう。

ちなみにmb_send_mailの第五引数を利用できないPHPのバージョン(5.2以前)で第五引数を指定するとメール自体が送信されません。

created by Rinker
時間がなくたって、プログラミングは学べます。学習を躊躇していた人たちに、既存の入門書で挫折した人たちに、「これならできる!」の最短カリキュラムを、土日の14時間で提供。まったくのプログラミング初心者が簡単なWebデータベースアプリを構築できるまでの成長コースを、手取り足取り、導きます。
created by Rinker
iCloudを活用すれば、撮影した写真の共有や大事なデータのバックアップなど、iPhoneやiPadをより快適に利用できるようになります。本書では、使いこなせば便利なのに、ちょっとわかりづらいiCloudの機能と活用法をわかりやすく紹介しています。

コメントする

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)