diff --git a/app/dashboard/templates/dashboard/alias_log.html b/app/dashboard/templates/dashboard/alias_log.html index 3bccaedf..61f34ec0 100644 --- a/app/dashboard/templates/dashboard/alias_log.html +++ b/app/dashboard/templates/dashboard/alias_log.html @@ -108,25 +108,32 @@ {% for log in logs %}
-
{{ log.when | dt }}
-
- {{ log.website_from or log.website_email }} +
{{ log.when | dt }} + {% if log.bounced %} ⚠️ {% endif %} +
- +
+ {% if log.bounced %} + {{ log.website_from or log.website_email }} + + {{ log.alias }} + + {{ log.mailbox }} + {% else %} + {{ log.website_from or log.website_email }} + + {% if log.is_reply %} {% elif log.blocked %} - {% elif log.bounced %} - --- Refused (or bounced) ---> {% else %} {% endif %} - - {{ log.alias }} - + {{ log.alias }} + {% endif %}
diff --git a/app/dashboard/views/alias_log.py b/app/dashboard/views/alias_log.py index 91465b53..64889eaa 100644 --- a/app/dashboard/views/alias_log.py +++ b/app/dashboard/views/alias_log.py @@ -16,6 +16,7 @@ class AliasLog: is_reply: bool blocked: bool bounced: bool + mailbox: str def __init__(self, **kwargs): for k, v in kwargs.items(): @@ -62,6 +63,7 @@ def alias_log(alias_id, page_id): def get_alias_log(gen_email: GenEmail, page_id=0): logs: [AliasLog] = [] + mailbox = gen_email.mailbox_email() q = ( db.session.query(ForwardEmail, ForwardEmailLog) @@ -81,6 +83,7 @@ def get_alias_log(gen_email: GenEmail, page_id=0): is_reply=fel.is_reply, blocked=fel.blocked, bounced=fel.bounced, + mailbox=mailbox ) logs.append(al) logs = sorted(logs, key=lambda l: l.when, reverse=True) diff --git a/app/models.py b/app/models.py index 39426280..f6f92a3b 100644 --- a/app/models.py +++ b/app/models.py @@ -513,6 +513,12 @@ class GenEmail(db.Model, ModelMixin): random_email = generate_email(scheme=scheme, in_hex=in_hex) return GenEmail.create(user_id=user_id, email=random_email) + def mailbox_email(self): + if self.mailbox_id: + return self.mailbox.email + else: + return self.user.email + def __repr__(self): return f"" diff --git a/email_handler.py b/email_handler.py index b3ac65fe..9c633ddf 100644 --- a/email_handler.py +++ b/email_handler.py @@ -250,11 +250,7 @@ def handle_forward(envelope, smtp: SMTP, msg: Message, rcpt_to: str) -> str: LOG.d("alias %s cannot be created on-the-fly, return 510", alias) return "510 Email not exist" - if gen_email.mailbox_id: - mailbox_email = gen_email.mailbox.email - else: - mailbox_email = gen_email.user.email - + mailbox_email = gen_email.mailbox_email() forward_email = get_or_create_forward_email(msg["From"], gen_email) forward_log = ForwardEmailLog.create(forward_id=forward_email.id) @@ -337,10 +333,7 @@ def handle_reply(envelope, smtp: SMTP, msg: Message, rcpt_to: str) -> str: gen_email = forward_email.gen_email user = gen_email.user - if gen_email.mailbox_id: - mailbox_email = gen_email.mailbox.email - else: - mailbox_email = gen_email.user.email + mailbox_email = gen_email.mailbox_email() # bounce email initiated by Postfix # can happen in case emails cannot be delivered to user-email