2

Gmailアカウントにアクセスして、PHPアプリケーションに送受信メールをインポートしようとしています。毎回すべてのメールをインポートしないように、インポートするたびに現在の日付を保存します。

// $this->dateLastSynchro is a DateTime object
$searchCriteria = 'NEW UNDELETED SINCE "' . $this->dateLastSynchro->format('r') . '" ';
$return = imap_search($this->mailBoxHandle, $searchCriteria);

最初のインポートは(を使用する場合は"ALL UNDELETED")正常に機能しますが、SINCEを使用すると、(新着メールを送受信した場合でも)結果が得られません。

日付の形式を使用しようとしましたY-m-dが、これを実行するとPHP通知が表示されます(認識されない基準のようなものが表示されます)。

手伝ってくれてありがとう。

編集

Maxが提案した解決策は問題なく機能しますが、コメントであるため回答を受け入れることができません。

4

2 に答える 2

1

以下は私にとってはうまくいきます:

$imap    = imap_open('{imap.gmail.com:993/imap/ssl/novalidate-cert}INBOX', "me@gmail.com", "qqqqqqqqqqqqqqqqqq");
$search  = imap_search($conn, 'ALL UNDELETED SINCE "28-OCT-12"', SE_UID);

(PHP の imap API は c-client ライブラリの mail_criteria() 関数のみを使用することに注意してください。したがって、c-client メンテナーからの抵抗により、IMAP4 ではなく IMAP2 スタイルの「SEARCH」コマンドを使用しています。 SEARCH コマンドを SEARCHPGM に解析するための汎用 API。)

于 2012-10-30T18:58:39.460 に答える
0

おそらく、最後に取得したUIDを保存する必要があります。メッセージがメールボックスに追加されると、UIDは増加することが保証されます。

于 2012-10-31T15:57:52.663 に答える