2012-04-20 12 views
1

送信者アドレスでPHP mail()を使用していくつかのニュースレターを送信しています。PHPが返信メールを検出して保存する

私がチェックしなければならないいくつかの理由から、これらの新しさの多くはバウンスされ、送信者アドレスに「失敗通知」を返します。

これらのメールは、送信者の電子メールを読む電子メールクライアントに返されます。

私はマーケティング担当者の "失敗した"すべてのメールアドレスを保存して管理できるといいと思います。 もちろん、電子メールクライアントから各電子メールアドレスをコピー/貼り付けるのは非常に難しいです(数百人です)。

PHP経由でこれらのアドレスを検出してキャッチする方法はありますか?

ありがとうございます。

+0

メールサーバーとして使用する内容に応じて、詳細を追加してください。 PHPにはIMAPメールボックスを開いて読むためのIMAPコードがあるようなオプションが常にある - あなたはこれを行うために何かを書くことができ、電子メールをMySQL DBに入れることができる。 – James

答えて

0

mail()コマンドから失敗したメッセージに関する情報を取得することはできません。これは、メッセージを処理するためにローカルメールサーバーに送信するためです。

メールボックスを確認するスクリプトと呼ばれる定期的に呼び出されるcronjobを実装する必要があります。したがって、PHPでIMAP and POP functionsを使用してメッセージを取得し、失敗したメッセージを処理する必要があります。

また、サーバーに障害が発生したときに実行するコードを含めることができるかどうかを確認するには、メールサーバーのマニュアルを参照する必要があります。したがって、メールサーバ自体は、データベース内の失敗したメッセージにフラグを立てるか、少なくとも失敗したメッセージを提供するスクリプトを呼び出します。

0

これに対する慣習的な解決策は、VERP http://cr.yp.to/proto/verp.txtです。基本的に、メッセージごとに一意の封筒送信者を使用します。その特定のアドレスに送り返されたものは、送信しようとしたアドレスからのバウンスです。

あなたのリストが[email protected]と呼ばれ、あなたが[email protected]にメッセージ12345を送信した場合たとえば、そのメッセージのエンベロープ送信者が[email protected]ようなものになるだろうし、あなたのMTAが正しい場所(このアドレスにルーティングするすべての電子メールを設定する必要がありますあなたのデータベースから失敗したアドレスを削除するスクリプト、または何でも)。

もちろん、適切なメーリングリストマネージャーを使用していれば(もちろん!)、これはすべてこれを処理するロジックを含んでいます。構成の単純な問題でなければなりません。

関連する問題