diff options
Diffstat (limited to 'mu4web/mu.py')
-rw-r--r-- | mu4web/mu.py | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/mu4web/mu.py b/mu4web/mu.py index 094db6a..09861af 100644 --- a/mu4web/mu.py +++ b/mu4web/mu.py @@ -19,22 +19,27 @@ from typing import ( parser = BytesParser(policy=email.policy.default) -def get_mail(id: str) -> email.message.Message: - """ - Lookup email by Message-ID. - - [Raises] - MuError - """ +def find_file(id: str) -> Optional[str]: cmd = subprocess.run(['mu', 'find', '-u', f'i:{id}', '--fields', 'l'], stdout=PIPE) filename = cmd.stdout.decode('UTF-8').strip() + if cmd.returncode == 4: + return None if cmd.returncode != 0: raise MuError(cmd.returncode) + return filename - with open(filename, "rb") as f: + +def get_mail(id: str) -> email.message.Message: + """ + Lookup email by Message-ID. + + [Raises] + MuError + """ + with open(find_file(id), "rb") as f: mail = parser.parse(f) return mail |