Browse Source

Refactor: create Alias.unsubscribe_link

Son NK 4 năm trước cách đây
mục cha
commit
ea45ac119e
2 tập tin đã thay đổi với 12 bổ sung6 xóa
  1. 9 0
      app/models.py
  2. 3 6
      email_handler.py

+ 9 - 0
app/models.py

@@ -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}>"
 

+ 3 - 6
email_handler.py

@@ -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"
         )