2

php erp システムの電子メール履歴の場合、imap を使用して電子メールをローカルの mysql データベースと同期したいと考えています。

添付ファイル付きのすべてのメッセージをダウンロードするのは思ったよりも高速ですが (6000 件のメッセージで約 5 分)、すべてのメッセージをダウンロードした後、変更のみをダウンロードするのは素晴らしいことです。問題は、フラグ (表示、フラグ、回答、削除) が時間の経過とともに変化する可能性があるため、電子メールの日付に頼ることができないことです。

変更された電子メールのみを取得する可能性はありますか?サンダーバードのようなローカル電子メール クライアントのベスト プラクティスは何ですか?

私がプロトコルを理解している限り、サーバーの「プッシュ」メソッドがありますが、ローカルの電子メール クライアントと同じように、php スクリプトを常に接続する必要はありません。

この回答は非常に役に立ちました。そのため、ヘッダーを (本文なしで) ダウンロードし、すべてのリクエストのすべてのメッセージを比較する必要がありますか?

編集

imapsyncのようなツールが既に存在することは知っていますが、外部依存関係なしで実行したいと考えています。

4

1 に答える 1

1

目的が imap サーバーからすべてのメールをダウンロードし、以前にダウンロードしてデータベースに保存されていない新しいメールがあるかどうかを定期的に確認することである場合は、PEAR Net_IMAP クラスを使用することをお勧めします。

PHP ネイティブ IMAP にはカスタム フラグを設定/取得する機能はありませんが、Net_IMAP クラスを使用すると次のように実行できます。

  1. IMAP サーバーに接続する
  2. メッセージを読む。
  3. DBに保存します。
  4. Net_IMAP メソッド setFlags を使用して、サーバー上のそのメッセージにカスタム フラグを設定します。例えば

    setFlags('savedToDb')
    

それでおしまい。次の反復では IMAP に接続し、設定したフラグを持たないすべてのメッセージをチェックします。このようにして、IMAP とデータベースの間で正常に同期されたすべての電子メールを処理できます。

于 2014-07-04T12:26:02.677 に答える