Tôi đang truy cập giao diện IMAP của Gmail thông qua python. Tôi chạy một lệnh như sau:Lệnh "tiêu đề tìm kiếm" IMAP không thành công khi văn bản tìm kiếm chứa dấu chấm than (!), Dấu và (&), v.v.
UID SEARCH HEADER Message-ID "[email protected]"
Điều đó thành công (trả về 1 UID của thông báo trùng khớp hoặc 0 nếu không tồn tại). Tuy nhiên, nếu văn bản tìm kiếm chứa các ký tự nhất định (như & hoặc!), Văn bản tìm kiếm sẽ bị cắt bớt tại thời điểm đó. Điều này có nghĩa:
UID SEARCH HEADER Message-ID "[email protected]"
Được đối xử giống như
UID SEARCH HEADER Message-ID ""
Ngoài ra:
UID SEARCH HEADER Message-ID "[email protected]"
Được coi là:
UID SEARCH HEADER Message-ID "abc"
Tôi đã trải qua ngôn ngữ IMAP spec, và từ đặc tả ngôn ngữ ABNF nó s giống như những ký tự đó phải hợp lệ. Tại sao gmail cắt ngắn các cụm từ tìm kiếm này tại "!" và "&" ký tự? Có cách nào để trốn thoát họ không? (Tôi đã thử !, không thành chuỗi được mã hóa nặng). Có RFC hay tài liệu nào cho thấy điều gì thực sự nên được chấp nhận? Đây có phải là lỗi trong triển khai imap của gmail không?
Tôi cũng đã cố gắng định dạng chữ, kết quả tương tự:
UID SEARCH HEADER Message-ID {15}
[email protected]
Tuy nhiên đối xử như:
UID SEARCH HEADER Message-ID {3}
abc
Cảm ơn!
IMAP lệnh RFC3501 Tìm kiếm: http://tools.ietf.org/html/rfc3501#section-6.4.4 chính thức cú pháp: http://tools.ietf.org/html/rfc3501#section-9
Tôi có thể khẳng định rằng không có gì đặc biệt về việc sử dụng dấu chấm than trong truy vấn tìm kiếm. Rất có thể bạn đã tìm thấy một lỗi trong gmail.Tôi khuyên bạn nên sử dụng một số máy chủ IMAP khác nhau trong quá trình phát triển, đặc biệt kể từ khi triển khai IMAP của Gmail không được biết đến với sự phù hợp với đặc tả IMAP. – nosid
Cảm ơn nosid. Thật không may, máy chủ IMAP tôi cần phải sử dụng với mã này là gmail, vì vậy việc thử nghiệm trên những người khác sẽ không giúp được với lỗi này. Nhưng nó là tốt để biết rằng tôi không đọc spec sai. Tôi sẽ cố gắng tìm cách báo cáo lỗi này cho google. – rocketmonkeys
Có, tôi hiện đang gặp sự cố này khi thực hiện tìm kiếm IMAP trên Gmail thông qua ứng dụng thư khách * alpine * cố gắng chọn tất cả thư có chủ đề chứa '!'. –