diff --git a/Pipfile b/Pipfile index 7f12583..ceb6984 100644 --- a/Pipfile +++ b/Pipfile @@ -7,6 +7,7 @@ name = "pypi" [packages] aiosmtpd = "*" +python-jata = "*" [requires] -python_version = "3.8" +python_version = "3" diff --git a/Pipfile.lock b/Pipfile.lock index 073b1fb..e69de29 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,34 +0,0 @@ -{ - "_meta": { - "hash": { - "sha256": "6855597726a44b85fab69f61e906c6c6082a751642724c4ce13e3ddbece06d64" - }, - "pipfile-spec": 6, - "requires": { - "python_version": "3.8" - }, - "sources": [ - { - "name": "pypi", - "url": "https://pypi.org/simple", - "verify_ssl": true - } - ] - }, - "default": { - "aiosmtpd": { - "hashes": [ - "sha256:b7ea7ee663f3b8514d3224d55c4e8827148277b124ea862a0bbfca1bc899aef5" - ], - "index": "pypi", - "version": "==1.2" - }, - "atpublic": { - "hashes": [ - "sha256:7dca670499e9a9d3aae5a8914bc799475fe24be3bcd29c8129642dda665f7a44" - ], - "version": "==1.0" - } - }, - "develop": {} -} diff --git a/TODO.md b/TODO.md index 0705fe3..fa766ef 100644 --- a/TODO.md +++ b/TODO.md @@ -1,5 +1,6 @@ # TODO +DEV 1. unittests 1. Web interface 1. Custom email processing @@ -14,3 +15,19 @@ 2. imap 3. handle connection disconnect 4. rethink deleted items + +MASTER +1. tests! +2. docker support +3. multi domain +4. [pop] auto delete +5. [pop] TOP command +6. merge with cloud_test branch + +7. User timeout for POP +8. unittests +9. Web interface +10. Custom email processing +11. Refactor smtp controller +12. pip installable package +13. Listen on port 465 for smtp too diff --git a/mail4one/pop3.py b/mail4one/pop3.py index 4981c00..48573d5 100644 --- a/mail4one/pop3.py +++ b/mail4one/pop3.py @@ -168,6 +168,7 @@ def trans_command_retr(mails: MailList, req: Request): write(ok("Contents follow")) write(get_mail(entry)) write(end()) + mails.delete(req.arg1) else: write(err("Not found")) diff --git a/mail4one/poputils.py b/mail4one/poputils.py index 6f59ef9..22e55e8 100644 --- a/mail4one/poputils.py +++ b/mail4one/poputils.py @@ -109,6 +109,7 @@ class MailEntry: def files_in_path(path): for _, _, files in os.walk(path): return [(f, os.path.join(path, f)) for f in files] + return [] def get_mails_list(dirpath: Path) -> List[MailEntry]: