|
@@ -1,12 +1,13 @@
|
|
|
|
+import sys
|
|
from config import DSN, MAILBOX
|
|
from config import DSN, MAILBOX
|
|
from model import StatusMeldung
|
|
from model import StatusMeldung
|
|
|
|
|
|
-from datetime import date, time
|
|
|
|
|
|
+from datetime import date, time, timedelta
|
|
from email.message import EmailMessage
|
|
from email.message import EmailMessage
|
|
from sqlalchemy import create_engine
|
|
from sqlalchemy import create_engine
|
|
from sqlalchemy.orm import Session
|
|
from sqlalchemy.orm import Session
|
|
from sqlalchemy.exc import IntegrityError
|
|
from sqlalchemy.exc import IntegrityError
|
|
-from imap_tools import MailBox
|
|
|
|
|
|
+from imap_tools import MailBox, AND
|
|
import json
|
|
import json
|
|
|
|
|
|
|
|
|
|
@@ -16,7 +17,7 @@ class MailImport:
|
|
MAILBOX["user"], MAILBOX["password"], MAILBOX["folder"]
|
|
MAILBOX["user"], MAILBOX["password"], MAILBOX["folder"]
|
|
)
|
|
)
|
|
|
|
|
|
- def mail_import(self):
|
|
|
|
|
|
+ def mail_import(self) -> int:
|
|
with (
|
|
with (
|
|
Session(create_engine(DSN)) as db_session,
|
|
Session(create_engine(DSN)) as db_session,
|
|
self.open_mailbox() as mb,
|
|
self.open_mailbox() as mb,
|
|
@@ -38,6 +39,7 @@ class MailImport:
|
|
print(e.args[0])
|
|
print(e.args[0])
|
|
|
|
|
|
mb.delete(imported)
|
|
mb.delete(imported)
|
|
|
|
+ return len(imported)
|
|
|
|
|
|
def get_status_message(self, msg: EmailMessage) -> StatusMeldung:
|
|
def get_status_message(self, msg: EmailMessage) -> StatusMeldung:
|
|
subject = msg.subject.split(";")
|
|
subject = msg.subject.split(";")
|
|
@@ -76,10 +78,20 @@ class MailImport:
|
|
)
|
|
)
|
|
|
|
|
|
def cleanup(self):
|
|
def cleanup(self):
|
|
- pass
|
|
|
|
|
|
+ date_criteria = date.today() - timedelta(days=7)
|
|
|
|
+
|
|
|
|
+ with self.open_mailbox() as mb:
|
|
|
|
+ messages = mb.fetch(
|
|
|
|
+ criteria=AND(date_lt=date_criteria, seen=True),
|
|
|
|
+ limit=500,
|
|
|
|
+ )
|
|
|
|
+ selected = [msg.uid for msg in messages]
|
|
|
|
+ mb.delete(selected)
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
if __name__ == "__main__":
|
|
mi = MailImport()
|
|
mi = MailImport()
|
|
- mi.mail_import()
|
|
|
|
|
|
+ res = mi.mail_import()
|
|
mi.cleanup()
|
|
mi.cleanup()
|
|
|
|
+ if res == 0:
|
|
|
|
+ sys.exit(1)
|