0

PHP - Codeigniter (Peeker Library) をバックエンドとして使用し、IMAP を使用して複数のメール アドレスからメールを取得しています。

imap フォルダーに対してクエリを実行するための複雑な検索基準がいくつかあります。スクリプトのパフォーマンスを向上させるために、新しいメールのみを検索し、メールボックス名、一意の ID (メールボックス内で一意)、MySQL テーブルにいくつかのヘッダー情報を保存します。

私は2つの問題を思いついた:

  1. Deleted / Movedアイテムを追跡するにはどうすればよいですか?
  2. 添付ファイルが存在するかどうかを判断する方法はありますか? (ヘッダー情報では添付ファイルのインジケーターの手がかりが得られないため、使用してみましimap_fetchstructureたが、添付ファイルを含むメッセージ全体を読み取るため、処理に時間がかかります)

ノート :

私はこのスクリプトをバックエンドで定期的に実行しています (ただし、cron ジョブではなく、外部アプリケーションが定期的にスクリプトを初期化します)。さらに、これらすべてを PHP で制限付きで実行しています。

私を助けてください。

ありがとう

4

2 に答える 2

0

php imapを使用していないのはなぜですか? peeker ライブラリや php imap と比較してシンプルで非常に高速で、常に新しいメールを取得します。

于 2013-04-17T08:06:05.463 に答える
0

まず第一に、IMAP では、FETCH BODYSTRUCTURE添付ファイル付きの完全なメッセージ データを転送する必要があることを意味する要件はありません。あなたの仮定が間違っているか、IMAP ライブラリに重大なバグがあるか、ここで間違った関数を使用しています。

第二に、あなたは UID を追跡することについて言及しましたが、UIDVALIDITY. RFC 3501を読んで、その意味を理解してください。プロトコルを知らずに IMAP を正しく扱うアプリケーションを実装する方法はありません。さらなる指針はRFC 4549にも示されています。

3 番目の質問は、削除または移動されたアイテムを求めることについてです。ベースライン IMAP では、これを行うことはできません。どのメッセージが削除され、どのメッセージが新しく到着したかを知る唯一の方法は、UID を明示的に追跡するUIDVALIDITYことです。どれが新しくてどれがなくなっているかを確認してください。RFC をもう一度読んでください。RFC には、すべての質問に対する回答と、同期プロセスを最適化する方法に関する提案が含まれています。また、IMAP に関する論文もあり、プロトコル チャットをさらに改善する方法と関連する拡張機能について詳しく説明しています。ただし、これは簡単なプロジェクトではありません。

于 2013-04-17T13:15:56.770 に答える