2010-11-21 18 views
0

実際にmail()でメールを送信し、失敗した結果の戻り値を確認するのとは別に、mail()が機能するかどうかを '機能検出'できますか?PHPメール機能のテストメールを呼び出さない機能

可能でない場合、失敗する可能性が高い一般的な告白の兆候は何でしょうか?

いくつかのシナリオ:メールがエラーを抑制していないフレームワークメールラッパーの周りの取得

  • 利用できないユーザーをモジュールに別のワークフローを提供する電子メールの設定エラー
  • に関する警告サイトの管理者を与える

    EDIT:何らかの明確化 - 報告されていないエラー(上流配信失敗、またはPH Pはmail()から真を返します)。基本的に私は、純粋にPHP(またはPHPからのシステムコール)で実行できる1つ以上の簡単なテストを探しています。これは、少なくともmail()という名前のヘッドアップは安全ではありません。

  • +0

    'mail()'が動作することを100%証明する方法はありません。そのメールが宛先に配信されることになります。 PHPが使用するように設定されているMTAは、このホストからのメールを受け付けないかもしれませんし、(本当に意味があったとしても)メールを受け入れて配送しないかもしれません。私はあなたがチェックできる赤い旗がないと言っているわけではありませんが、あなたは非常に多くのものをチェックすることしかできません。 – cdhowie

    +0

    ありがとうございます。はい、それができることは、メールを待ち行列に入れて希望することです。私が本当に求めているのは、mailが 'mail()'を呼び出さずにエラーを引き起こすかどうかをテストする方法があるかどうかです。サイレント・エラー(電子メールが到着しなくても真実を報告する)は、私が達成しようとしているものを超えています。 – Hamish

    答えて

    1

    プログラムでチェックすることはできません。ほとんどの場合、構成が誤っているサーバーでは、mail()は正常に処理されたように見えますが、メッセージはサーバーのどこかのキューに置かれます。

    cdhowieは、たとえ動作したとしても、上流に他の問題がある可能性があると述べています。

    あなたができることは、件名に何らかのランダムなキーを付けてサーバーのいずれかにテスト電子メールを送信することです。サーバー上で、いくつかのコードでこれらのテスト電子メールを読み取り、それらをデータベースに追加するようにしてください。テスト電子メールが正常に受信されたかどうかにかかわらず、簡単なyay/nayを返す簡単なスクリプトを作成します。 isitthereyet.php?key=ASDFASDFASDF

    これはおそらくあなたが望んでいるものの過剰なことですが、私が考えることができる最高の解決策です。

    +1

    ええ、冗談ですが、とにかく良いアイデアです。誰かが作成するのに便利なツールかもしれません - 電子メールを受信し、RCPなどを介してあなたのアプリに領収書を通知するシンプルなWebサービスです。 – Hamish

    0

    mail()が存在するため、未定義の関数が返されないかどうかチェックしたいだけですか? function_existsを使用できます。

    +0

    いいえ、メールはPHPコアの一部です。 – Hamish

    +0

    メールのini設定を確認し、怪しいかどうかを確認する関数を作成することができます。おそらく、誤って設定された設定から誰かのカスタム設定を伝えるのは難しいでしょう。あなたはsendmail_pathが存在するかどうか、あるいはsendmail_pathをexecしてもそれが適切かどうかを調べるために出力をチェックすることができます。 – Klinky

    関連する問題