こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

mb_sendmailのエラーについて質問です。

mb_sendmailのエラーについて質問です。
mb_sendmailでメールを送信する際に、
$re = mb_sendmail(…);
という使い方をして、$reでメールの送信の成功と失敗を見分けようとしましたが、$re自体にはPHPの機能としての返り値はあるものの、実際にメールが届いたか届かなかったかの判断はできませんでした。例えばメールアドレスが間違っていたりして実際にメールが届いていない場合などはそのエラーをどういう風に拾えばよいでしょうか?
PHPは自体は非常に安定しているので mb_sendmailでエラーが返ってくるようなことは殆どありませんが、メールそれ自体が届かないということは比較的たくさんあります。
そのようなエラー情報を取得するにはどうしたらよいでしょうか?

現在、Ubuntu 9.10で自前の送信メールサーバー(Postfix)とLAMP環境で開発しております。
よろしくお願いします。

投稿日時 - 2010-05-28 20:59:35

QNo.5928660

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

4人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

mpx

>> 例えばメールアドレスが間違っていたりして実際にメールが届いていない場合などは
>> そのエラーをどういう風に拾えばよいでしょうか?

既出のようにメールが相手に届いたことを確実にチェックする方法は有りませんが、
メールサーバーが自前なら相手のメールサーバにメッセージが受信されたかどうかまでは
判断する方法が有ります。

 MTA(Postfix)のログから相手のMTAの応答を確認するだけです。
ただし、送信直後にチェックしても分かりません。最近Greylisting方式の
チェックしているMTAも多いので、cronなどを使って後でまとめて
チェックするスクリプトを組んでおく必要があります。

投稿日時 - 2010-05-29 09:59:05

ANo.2

既に出ている通りですが、届いたかどうかは分かりません。
一番、確実なのはメールを送ってから、電話で「メール届いた?」と確認する事です。
冗談です。
電話で済む用件をメールで送り、メールが届いたかを電話で確認すると言う笑い話です。

真面目な話しをすると、最近の登録フォームとかって 「まず空メールを送ってください」っての多くないですか?
んで、その空メール送ってきた送信者にユニークなIDつけたURLを返してあげる。っていう手順。
あれは、メールアドレスの入力間違いとかを防ぐ為と、到達性のあるメールアドレスであることを確認する為にやってるようなもんです。
そんな事をしないとメールの到達性が確認できないもんだから、みんな そうしてるのかなぁ。と思います。

投稿日時 - 2010-05-29 00:16:39

ANo.1

>メールそれ自体が届かない

しょせんメールなので届かなかったことはわかりません。
届いたかどうかわかってしまってはスパムの温床になるため、
最近ではエラーも返してこないのが当たり前なので

投稿日時 - 2010-05-28 22:38:08

あなたにオススメの質問