2012-05-12 51 views
6

Tôi đang sử dụng tính năng này với máy chủ SMTP của Gmail và tôi muốn tìm kiếm qua IMAP cho email được gửi đến hoặc nhận từ địa chỉ.Tìm kiếm IMAP bằng Python từ hoặc đến địa chỉ email được chỉ định

Đây là những gì tôi có:

mail = imaplib.IMAP4_SSL('imap.gmail.com') 

mail.login('user', 'pass') 
mail.list() 
mail.select("[Gmail]/All Mail") 

status, email_ids = mail.search(None, 'TO "[email protected]" OR FROM "[email protected]"') 

Dòng cuối cùng của lỗi này là: imaplib.error: SEARCH command error: BAD ['Could not parse command']

Không chắc thế nào tôi phải làm điều đó loại HOẶC tuyên bố trong python của imaplib. Nếu ai đó có thể nhanh chóng giải thích những gì sai hoặc chỉ cho tôi đi đúng hướng, nó sẽ được đánh giá cao.

Trả lời

14

Lỗi bạn nhận được được tạo từ máy chủ vì lỗi không thể phân tích cú pháp truy vấn tìm kiếm chính xác. Để tạo truy vấn hợp lệ theo RFC 3501, trong trang 49 nó được giải thích chi tiết về cấu trúc.

Ví dụ chuỗi tìm kiếm của bạn là đúng nên là:

'(OR (TO "[email protected]") (FROM "[email protected]"))' 
+1

Cảm ơn bạn. Tôi đã tìm kiếm cú pháp chính xác để tìm kiếm (không có nhiều trang hữu ích trên Google). – Tech163

+1

@ Tech163 Bạn được chào đón. Với các loại giao thức này, bạn phải đi thẳng tới nguồn (RFC) để có được thông tin tốt nhất. –

+1

Có vẻ như 'FROM' có thể cần phải được thay đổi thành' HEADER FROM', v.v. Chỉ cái sau mới làm việc cho tôi. –

Các vấn đề liên quan