Refactor: create Alias.unsubscribe_link

This commit is contained in:
Son NK 2020-10-22 10:37:02 +02:00
parent f624085aa3
commit ea45ac119e
2 changed files with 12 additions and 6 deletions

View File

@ -1020,6 +1020,15 @@ class Alias(db.Model, ModelMixin):
else:
return self.user.email
def unsubscribe_link(self) -> (str, bool):
"""return the unsubscribe link along with whether this is via email (mailto:) or Http POST
The mailto: method is preferred
"""
if UNSUBSCRIBER:
return f"mailto:{UNSUBSCRIBER}?subject={self.id}=", True
else:
return f"{URL}/dashboard/unsubscribe/{self.id}", False
def __repr__(self):
return f"<Alias {self.id} {self.email}>"

View File

@ -654,12 +654,9 @@ def forward_email_to_mailbox(
add_or_replace_header(msg, "To", to_header.strip())
# add List-Unsubscribe header
if UNSUBSCRIBER:
unsubscribe_link = f"mailto:{UNSUBSCRIBER}?subject={alias.id}="
add_or_replace_header(msg, "List-Unsubscribe", f"<{unsubscribe_link}>")
else:
unsubscribe_link = f"{URL}/dashboard/unsubscribe/{alias.id}"
add_or_replace_header(msg, "List-Unsubscribe", f"<{unsubscribe_link}>")
unsubscribe_link, via_email = alias.unsubscribe_link()
add_or_replace_header(msg, "List-Unsubscribe", f"<{unsubscribe_link}>")
if not via_email:
add_or_replace_header(
msg, "List-Unsubscribe-Post", "List-Unsubscribe=One-Click"
)