Почему BEFORE и SINCE не работают с числовым значением месяца?
Пишу простую программу-парсер для работы с электронной почтой через imap и email. При попытке написать алгоритм поиска при помощи self.imap.search столкнулся со странным поведением флагов поиска BEFORE и SINCE при указании месяца как число.
Если кратко, то при использовании флага BEFORE с числовым значением, например, февраля, в консоли выдает такой кортеж: ('OK', [b'1 2 3 4 5 6 7 8 9 10'])
То есть показывает 10 из 10 писем в ящике, подходящие по данному параметру, что не является истинной.
Но при этом, если я уккажу месяц как текстовое значение "Feb", то кортеж уже будет таким: ('OK', [b'1 2 3'])
3 письма, что уже полностью совпадает с действительностью.
Ситуация же с SINCE еще проще:
При указании месяца как число я всегда получаю пустой кортеж: ('OK', [b''])
Но уже при указании месяца строки, он будет показывать верный результат: ('OK', [b'1 2 3 4 5 6 7 8'])
Во всех примерах применения используется именно текстовое представление месяца при использовании данных флагов поиска. Однако, мне, как новичку, кажется, что если для конкретного флага поиска нужно одинаковое поведение при неправильном его использовании. Разве мне не должна высветиться ошибка о невеерном формате даты, или хотя бы такой же пустой кортеж при использовании BEFORE, как это работает с SINCE.
Объясните пожалуйста, быть может я не понимаю логики поведения в данном контексте?
Search mailbox for matching messages. charset may be None, in which case no CHARSET will be specified in the request to the server. The IMAP protocol requires that at least one criterion be specified; an exception will be raised when the server returns an error.
Иными словами, что тебе вернёт сервер, и как он сообщит (и сообщит ли!) об ошибке - зависит от сервера, либа только оборачивает его ответы в объекты и исключения питона.
Если сервер решает что "фз что ты ищешь, на, держи всё что есть", то либа это молча и вернёт.