aboutsummaryrefslogtreecommitdiff
path: root/mu4web/mu.py
diff options
context:
space:
mode:
Diffstat (limited to 'mu4web/mu.py')
-rw-r--r--mu4web/mu.py21
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