2012年04月14日に投稿

[PHP]mb_send_mail関数はサーバーのLANケーブルが抜けていてもtrueを返す

mb_send_mail関数はPHPからメールを送信する機能を持っています。この関数を実行すると、送信に成功するとtrueが、失敗するとfalseが返されるとPHPマニュアルに記載があります。

「成功する」というのはどの程度まで保証されているのか気になったので、サーバーのLANケーブルを抜いて下記のコードを実行しました。$mail_addressは任意のメールアドレスです。CentOS 5.8、PHPは5.1.6で動作確認しました。MTAはsendmailです。

mail.php
[php]

LANケーブルを抜きます。
そしてpingコマンドでネットワークが繋がっていないことを確認します。

[html]
# ping google.com
ping: unknown host google.com
[/html]

コマンドラインから上記のスクリプトを実行します。

[html]
php -f mail.php
[/html]

すると、結果は下記になります。

[html]
bool(true)
[/html]

つまりPHPのmb_send_mail関数からはMTAからメールが送出されたかどうかは判別ができないことになります。信頼性の高いメール配送機能を作るには別の方法を考える必要があるようです。

関連記事

Leave a Reply