IMAP検索クエリを作成してPHPコードで特定のメールを除外しようとしています... "OR"検索条件を使用する必要がある状況に押し込まれました。検索コマンドのセクション6.4.4を参照する場合imap_search()不明な検索条件 "OR"
<?php
$search_string = 'OR (SUBJECT "FedEx" SUBJECT "USPS")';
$search_string = 'OR SUBJECT "FedEx" SUBJECT "USPS"';
$search_string = 'SUBJECT "FedEx" OR SUBJECT "USPS"';
$search_string = 'OR (SUBJECT "FedEx") OR (SUBJECT "USPS")';
$search_string = 'OR (SUBJECT "FedEx") (SUBJECT "USPS")';
//all of the search strings when used separately didn't work
$emails = imap_search($inbox, $search_string);
?>
しかし、使用された場合、PHPはRFC 2060には、ドキュメントが不正確であるかもしれないと言うphp docs for IMAPを参照し、指示誤差PHP Notice: Unknown: Unknown search criterion: OR (errflg=2) in Unknown on line 0
をスローするので、それは私達ができることに言及しますOR、NOTおよびいくつかの余分な検索条件を使用して...
はそうプレフィックス位置、中置位置でそれを使用し、RFC 2060で提案されているよう括弧を使用してみましたが、すべて無駄
でまた、 php bug entryを訪れましたが、これがバグか他の方法で使用する必要があるかどうかは不明です!ソリューション/回避策をお持ちのお客様は誰ですか?
私はそれが条件を満たしている場合...私はIMAP検索
編集/アップデート経由で行うことがしたいすべてのメールを反復してコードをチェックインするために嫌いになります。
imap_search関数はIMAP4と完全に互換性がありません。のとして使用されるC-クライアントは今だけIMAP2をサポートし、いくつかの検索基準はそうと類似のPHPコードなど「OR」
として使用するために使用することはできません。
$inbox = imap_open('{imap.example.com:993/imap/ssl}INBOX', '[email protected]', 'pass123', OP_READONLY);
$search_string = 'SUBJECT "FedEx" OR SUBJECT "USPS"';
$emails = imap_search($inbox, $search_string);
がエラーをスローします
Gitのレポ:https://github.com/php/php-src
観測と参照 "不明な検索基準" と言って
PHPソーストレース:(参照:https://github.com/php/php-src/blob/master/ext/imap/php_imap.c)
/ext/imap/php_imap.c - >ラインNo:4126
imap_search =>ラインNo:4148
Cクライアントライブラリのソーストレース:
SRC/C-クライアント/ mail.c - >行番号:3973
/docs/internal.txt - >行番号:1919 => mail_criteria()
基準IMAP2形検索条件文字列
警告:この関数はIMAP4検索条件を受け入れません。
IMAP2 RFC1064 => [REF:https://tools.ietf.org/html/rfc1064] [ページ:13]
IMAP4 RFC2060 => [REF:http://www.faqs.org/rfcs/rfc2060.html] [セクション:6.4。4]
注: コアモジュール(IMAP)のコア検索機能は、PHPではまだ使用できません。これは...開発者コミュニティの関心に
をもたらすことを願っています。しかし、私はPHPのバージョンはIMAP4互換のCクライアントを使用しています...
- は、PHPを強制する方法はありますかについてはよく分かりません最新のCクライアント ライブラリを更新/使用するだけですか?
- 最新の(11Apr 2016時点で)c-clientはIMAP2のみをサポートしていますか?
- ライブラリのソースコードを変更して、 をインストールする必要がありますか?
- それとも我々は は(のOAuth2をサポートしていないそれらのメールプロバイダのための を取得し、IMAPプロトコルのメール検索)同じことを達成するために使用できるサードパーティによって開発された任意の他のPHPライブラリはありますか?
あなたのサーバーにバグがないことを確認しましたか?多くの「オフブランド」サーバーには、検索実装が最小限または壊れています。 – Max
リンクを見て、PHPのバグのように見えます。それは新しいクライアントを使用することについて何か言いますか? – Max
@Max、IMAPサーバはgmailサーバです... imapサーバが故障している可能性はほとんどありません –