I need an alternative for IMAP search command "A search 1:* unseen not deleted" since the email server is forbidding the search command. I tried using "A status (unseen)" but it always returns zero though there's an unread message. Is there any alternative for the command? Thanks in advance.
问题:
回答1:
Is your problem that the IMAP server doesn't support SEARCH
at all, or that it doesn't like your particular SEARCH
command? If it's the latter, we can simplify:
A SEARCH UNSEEN UNDELETED
(as 1:*
is implicit). Even simpler -- just in case the server doesn't like and-ing SEARCH
terms together at all -- would be:
A SEARCH UNSEEN
B SEARCH DELETED
and logically doing the AND in your code.
The brute-force way of doing it is:
C UID FETCH 1:* FLAGS
and then picking out all the ones with neither \Seen
nor \Deleted
. (I'm suggesting UID FETCH
because a similar FETCH
command will return BAD
on an empty folder.)
Also, you're not supposed to call the STATUS
command on the currently-selected folder:
Note: The STATUS command is intended to access the status of mailboxes other than the currently selected mailbox. Because the STATUS command can cause the mailbox to be opened internally, and because this information is available by other means on the selected mailbox, the STATUS command SHOULD NOT be used on the currently selected mailbox.