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に不達となるようです。
1 2 3 4 5 6 7 8 9 | <?php ... ... ... $returnPath = '-f'.'aaa@aaa.com'; mb_send_mail( $to, $sub, $body, $header, '-f'.$returnPath); ?> |
1 2 3 4 5 6 7 8 9 | <?php ... ... ... $returnPath = '-f'.'aaa@aaa.com'; mb_send_mail( $to, $sub, $body, $header, $returnPath); ?> |
リターンパスとは
宛先に不備があったり、送信先サーバーから拒否されたり等「エラー」があった際の返信先メールアドレスとして指定するメールアドレスのことです。
設定はエラーメールを受信したいメールアドレスの頭に「-f」を付与します。
Apple iCloudは他のメールサーバーに比べ厳しかった
リターンパスの設定の不備でiCloudに拒否されていたのですが、リターンパスに設定しているメールアドレスが間違った状態なのでエラーメールを受信することもできず、いろいろ試し時間がかかりました。
結果は「バグ」でした。
リターンパスの設定には気を付けましょう。
ちなみにmb_send_mailの第五引数を利用できないPHPのバージョン(5.2以前)で第五引数を指定するとメール自体が送信されません。
S.E->お勧め記事;
- macOS Monterey にアップデート後、composerやhomebrewでenv: php: No such file or directoryが出る
- PHP フレームワーク Laravel ディレクティブ – ループ変数 $loop –
- PHPフレームワーク「Laravel」ディレクティブ-繰り返し処理(ループ処理)-
- PHPフレームワーク「Laravel」ルーティング Route::get()
- PHPフレームワーク「Laravel」ディレクティブ-分岐処理(条件分岐)-
- PHPフレームワーク「Laravel」Bladeテンプレートを利用する
- XSERVERにSSHを利用してLaravel環境を構築する
- PHPフレームワーク「Laravel」PHPテンプレートを利用する
- PHPフレームワーク「Laravel」MVCとコントローラを利用する
S.E->PR;
チームのタスク管理ツール【backlog】
FREENANCE(フリーナンス)
S.E->Weekly Ranking;
S.E->プロフィール;





