Очиститель почты
from imapclient import IMAPClient
import pyzmail
import datetime
EMAIL = "your_email@gmail.com"
PASSWORD = "your_password_or_app_password"
IMAP_SERVER = "imap.gmail.com"
SENDER_FILTER = "newsletter@example.com" # можно список
SUBJECT_KEYWORDS = ["скидка", "акция", "подтверждение", "рассылка"]
DAYS_OLD = 60 # письма старше этого срока
def connect():
server = IMAPClient(IMAP_SERVER, ssl=True)
server.login(EMAIL, PASSWORD)
server.select_folder("INBOX", readonly=False)
return server
def search_emails(server):
before_date = datetime.date.today() - datetime.timedelta(days=DAYS_OLD)
criteria = ['BEFORE', before_date.strftime("%d-%b-%Y")]
if SENDER_FILTER:
criteria += ['FROM', SENDER_FILTER]
return server.search(criteria)
def filter_by_subject(server, uids):
filtered = []
for uid in uids:
raw = server.fetch([uid], ['BODY[]', 'FLAGS'])[uid]
msg = pyzmail.PyzMessage.factory(raw[b'BODY[]'])
subject = msg.get_subject().lower()
if any(keyword in subject for keyword in SUBJECT_KEYWORDS):
filtered.append(uid)
return filtered
def delete_emails(server, uids):
if not uids:
print("Писем для удаления не найдено.")
return
server.delete_messages(uids)
server.expunge()
print(f"Удалено писем: {len(uids)}")
if __name__ == "__main__":
print("🔐 Подключение к почте...")
server = connect()
print("📬 Поиск писем по фильтрам...")
uids = search_emails(server)
uids = filter_by_subject(server, uids)
print(f"📛 Найдено {len(uids)} писем на удаление.")
delete_emails(server, uids)
server.logout()