2016-09-14 7 views
0

sendmailがトランザクションログ(あるいは最後の状態)をphpメールに返すことができ、メールサーバーが実際にメッセージを送信できたかどうかを確認することができると言われています。実際にこれをどうやって行うのですか?私はそれへの参照を見つけることができません。簡単に言えば、sendmailが実際に受信者と通信でき、php mail()やその他の方法を知っているかどうかを知りたいのです。PHPメールへのsendmailの返信

答えて

0

ちょうど検出することはできません

存在しないifスパムのための条件

if(mail($param)){ 
    echo "email sent"; 
}else{ 
    echo "there is some error"; 
} 

550またはユーザの異なる1内に配置します。

+0

確かに電子メールがバウンスされ、スパムのために550個のものがあるか、またはユーザーのために別のものが存在しない場合はどうなりますか?私は知らない。 – UKUser35

+0

システムのmailclientがPHPからメッセージを受け取った場合、 'mail()' - コマンドは真偽値を返します。言い換えれば、sendmailが(何らかの理由で)メッセージの送信に失敗した場合、 'mail()' - コマンドはtrueを返します。 –

+0

同僚は、Rackspaceは何とかそれを動作させることができたと言いました(私は今それらをホストしていません)、PHPメールと話すためにsendmailを入手する方法がありました(あるいは別のやり方でした)したがって、phpメールをより良く、より詳細にすることができます。 – UKUser35

0

私はsendmail自体のログを記録せずにこれが可能だとは思わない。だから:

  • は、サーバー上のメールログへのアクセス権を持っている必要があります(あるいは、少なくとも、あなたのメールを送信しているから、電子メールの)
  • 投票は、これらのログ成功/またはエラーメッセージについて
  • これらのログに従ってメソッドをトリガーします。

これらのメールログは、PHPコードとは非同期であることに注意してください。あなたのスクリプトがすでに実行を終了してから、数秒後にバウンスされたメールが届く可能性があります。したがって、mail()によって送信されたメッセージが正常に配信されたか、それがバウンスされたかどうかをPHPに知らせることは不可能(または少なくとも非常に非効率的)です。

sendmailにはコマンドラインを使ってこれらの種類のものをポーリングする独自のインターフェースがあるかもしれませんが、それについてはわかりません。

とにかく、設定するのは難しいことです。しかし、ほとんどのトリッキーなことと同じように、既にこのようなものを書いている人がいるかもしれません;-)

0

「別の/外部のSMTPサーバに引き渡す」ということを理解しています。

AFAIK sendmail.org(特にsendmail-8.12.0 +)ではsendmailでは不可能です。

他のMTA/SMTPサーバーでは可能かもしれませんが、トランザクションに長時間(分)かかる場合があります。
最初の/最初の配送の試みの結果のみが表示されます。それはほとんどのMTA/SMTPサーバの大幅な修正が必要であろう私の知る限り、「3秒未満を取って別のサーバーに転送が成功を報告」のような

何かがMTA/SMTPサーバ
が、で実施することができます。

関連する問題