55 lines
1.6 KiB
Python
55 lines
1.6 KiB
Python
#!/usr/bin/env python3
|
|
"""Test IMAP SEARCH proti MailStore serveru — ověření rychlosti a funkčnosti."""
|
|
import imaplib
|
|
import ssl
|
|
import sys
|
|
import time
|
|
|
|
HOST = "192.168.1.53"
|
|
PORT = 143
|
|
USER = "admin"
|
|
PASS = "*$N(B)vMUym!%"
|
|
|
|
|
|
def connect():
|
|
ctx = ssl.create_default_context()
|
|
ctx.check_hostname = False
|
|
ctx.verify_mode = ssl.CERT_NONE
|
|
M = imaplib.IMAP4(HOST, PORT)
|
|
M.starttls(ssl_context=ctx)
|
|
M.login(USER, PASS)
|
|
return M
|
|
|
|
|
|
def main():
|
|
t0 = time.time()
|
|
M = connect()
|
|
print(f"[{time.time()-t0:.1f}s] připojeno + login", flush=True)
|
|
|
|
# Přímý SELECT na konkrétní složku (LIST cizí archivy neukáže, SELECT ano)
|
|
target = "vladimir.buzalka@buzalka.cz/Exchange vladimir.buzalka/Sent Items"
|
|
typ, data = M.select(f'"{target}"', readonly=True)
|
|
count = int(data[0]) if typ == "OK" and data and data[0] else 0
|
|
print(f"[{time.time()-t0:.1f}s] SELECT '{target}' = {count} zpráv (typ={typ})", flush=True)
|
|
if count == 0:
|
|
M.logout()
|
|
return
|
|
|
|
# Test SEARCH různých kritérií
|
|
for crit, val in [("ALL", None), ("SUBJECT", "re"), ("FROM", "cz"), ("TEXT", "objednávka")]:
|
|
ts = time.time()
|
|
if val is None:
|
|
typ, data = M.search(None, crit)
|
|
else:
|
|
typ, data = M.search(None, crit, f'"{val}"')
|
|
nums = data[0].split() if data and data[0] else []
|
|
label = crit if val is None else f'{crit} "{val}"'
|
|
print(f"[{time.time()-t0:.1f}s] SEARCH {label}: {len(nums)} výsledků ({time.time()-ts:.2f}s)", flush=True)
|
|
|
|
M.logout()
|
|
print(f"[{time.time()-t0:.1f}s] hotovo", flush=True)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|