2012-10-09 20 views
5

Posta aramak için gmail'in IMAP API'sini kullanıyorum.Birden çok OR ile IMAP ölçütleri

Farklı anahtar kelimeler aramak için 'VEYA' ölçütlerini kullanıyorum. Ben çevirir

kriterlere VEYA kriterlere VEYA kriterler veya kriterler

gibi uzun bir ifade çalıştığımda, yani bir düzey yalnızca bununla

'UID SEARCH OR (FROM "[email protected]") (TO "[email protected]")' 

gibi bir şey giderseniz bu iyi çalışıyor, çalışmıyor (I sözdizimini anlamak kadarıyla)

'UID SEARCH OR (OR (FROM "[email protected]") (TO "[email protected]")) (OR (FROM "[email protected]") (TO "[email protected]"))' 

yapmak için açıkça temelde ya belirli bir l HERHANGİ için gönderilen veya gönderilen tüm mesajları istiyoruz e-postaların

ist

ben libray aldığım hata

[ 'A34', 'BAD', 'Could', 'not', 'parse', 'command' ] 

herhangi bir öneri mi?

+0

deneyin – Max

+0

Hiç aldın bu işe @kkurian – kkurian

+0

henüz değil, ben her biri için arayarak etrafında çalıştı ayrı ayrı ve daha sonra listelerin birleştirilmesi.Maksiyet tavsiyelerini takip etmek için yeniden yazmak zorunda kalacağım bir node.js IMAP lib kullanıyorum.Onlar muhtemelen daha sonra bunu yapacak ve sonuçları burada yayınlayacağım – forste

cevap

4

Parantez kullanmayın.

IMAP bunlara ihtiyaç duymaz cila notasyonu kullanır:

UID SEARCH OR OR FROM [email protected] TO [email protected] OR FROM [email protected] TO [email protected] 

(2'den fazla işlenen alabilir IMAP VE operatörü olarak) parantez ihtiyaç vardır durum vardır: Yani eğer https://www.limilabs.com/blog/imap-search-requires-parentheses

+1

Cevabınız için teşekkürler. , RPN (en azından bir hesap makinesinde) operatörün işlenenleri çalıştırmasını sağlar. –

+0

@RichardA Doğru. –

+0

Rfc'de belirtilen Lehçe gösterimi var mı cument? –

1

Birlikte "VEYA" yapmak istediğiniz N ifadeleri var, bu N ifadelerini N-1 "OR" ler ile öneklemelisiniz.

Perl, örneğin, olurdu:? Arasına boşluklar (ve OR olmadan

$search = join " ", ("OR") x (@exprs - 1), @exprs;