diff --git a/modoboa/webmail/lib/imaputils.py b/modoboa/webmail/lib/imaputils.py index 71b32f510..d8eff0014 100644 --- a/modoboa/webmail/lib/imaputils.py +++ b/modoboa/webmail/lib/imaputils.py @@ -292,20 +292,21 @@ class IMAPconnector: return f"OR {old} {c}" if criterion == "both": - criterion = "from_addr, subject" - criterions = "" - for c in criterion.split(","): - if c == "from_addr": - key = "FROM" - elif c == "subject": - key = "SUBJECT" - else: - continue - - criterions = or_criterion(criterions, f'({key} "{pattern}")') - + criterion = "from_addr,subject" + if not pattern: criterions = "ALL" + else: + criterions = "" + for c in criterion.split(","): + if c == "from_addr": + key = "FROM" + elif c == "subject": + key = "SUBJECT" + else: + continue + criterions = or_criterion(criterions, f'({key} "{pattern}")') + self.criterions = [bytearray(criterions, "utf8")] def messages_count(self, **kwargs) -> int: diff --git a/modoboa/webmail/tests/test_lib_imaputils.py b/modoboa/webmail/tests/test_lib_imaputils.py index b43391f2c..a16f6231d 100644 --- a/modoboa/webmail/tests/test_lib_imaputils.py +++ b/modoboa/webmail/tests/test_lib_imaputils.py @@ -1,6 +1,5 @@ """mailutils tests""" -import io import unittest from modoboa.webmail.lib.imaputils import IMAPconnector @@ -23,7 +22,7 @@ class ImapUtilsTestCase(unittest.TestCase): """Test with both Criterion and pattern""" self.imap_connector.criterions = [] self.imap_connector.parse_search_parameters("both", "bob") - result = [bytearray('(FROM "bob") OR (SUBJECT "bob")', "utf8")] + result = [bytearray('OR (FROM "bob") (SUBJECT "bob")', "utf8")] self.assertEqual(self.imap_connector.criterions, result) def test_criterions_one_criterion_without_pattern(self): @@ -31,4 +30,4 @@ class ImapUtilsTestCase(unittest.TestCase): self.imap_connector.criterions = [] self.imap_connector.parse_search_parameters("SEEN", "") result = [bytearray("ALL", "utf8")] - self.assertEqual(self.imap_connector.criterions, result) \ No newline at end of file + self.assertEqual(self.imap_connector.criterions, result)