mirror of
https://github.com/simple-login/app.git
synced 2024-11-13 07:31:12 +01:00
Do not replace unsubs that go to UNSUBSCRIBER (#2051)
This commit is contained in:
parent
a7d4bd15a7
commit
9719a36dab
2 changed files with 27 additions and 2 deletions
|
@ -3,6 +3,7 @@ from email.header import Header
|
|||
from email.message import Message
|
||||
|
||||
from app.email import headers
|
||||
from app import config
|
||||
from app.email_utils import add_or_replace_header, delete_header
|
||||
from app.handler.unsubscribe_encoder import (
|
||||
UnsubscribeEncoder,
|
||||
|
@ -47,6 +48,11 @@ class UnsubscribeGenerator:
|
|||
method = raw_method[start + 1 : end]
|
||||
url_data = urllib.parse.urlparse(method)
|
||||
if url_data.scheme == "mailto":
|
||||
if url_data.path == config.UNSUBSCRIBER:
|
||||
LOG.debug(
|
||||
f"Skipping replacing unsubscribe since the original email already points to {config.UNSUBSCRIBER}"
|
||||
)
|
||||
return message
|
||||
query_data = urllib.parse.parse_qs(url_data.query)
|
||||
mailto_unsubs = (url_data.path, query_data.get("subject", [""])[0])
|
||||
LOG.debug(f"Unsub is mailto to {mailto_unsubs}")
|
||||
|
|
|
@ -13,8 +13,7 @@ from app.handler.unsubscribe_encoder import (
|
|||
)
|
||||
from app.handler.unsubscribe_generator import UnsubscribeGenerator
|
||||
from app.models import Alias, Contact, UnsubscribeBehaviourEnum
|
||||
from tests.utils import create_new_user
|
||||
|
||||
from tests.utils import create_new_user, random_email
|
||||
|
||||
TEST_UNSUB_EMAIL = "unsub@sl.com"
|
||||
|
||||
|
@ -204,3 +203,23 @@ def test_unsub_preserve_original(
|
|||
assert message[headers.LIST_UNSUBSCRIBE_POST] is None
|
||||
else:
|
||||
assert "List-Unsubscribe=One-Click" == message[headers.LIST_UNSUBSCRIBE_POST]
|
||||
|
||||
|
||||
def test_unsub_preserves_sl_unsubscriber():
|
||||
user = create_new_user()
|
||||
user.unsub_behaviour = UnsubscribeBehaviourEnum.PreserveOriginal
|
||||
alias = Alias.create_new_random(user)
|
||||
Session.commit()
|
||||
config.UNSUBSCRIBER = random_email()
|
||||
contact = Contact.create(
|
||||
user_id=user.id,
|
||||
alias_id=alias.id,
|
||||
website_email="contact@example.com",
|
||||
reply_email="rep@sl.local",
|
||||
commit=True,
|
||||
)
|
||||
message = Message()
|
||||
original_header = f"<mailto:{config.UNSUBSCRIBER}?subject=dummysubject>"
|
||||
message[headers.LIST_UNSUBSCRIBE] = original_header
|
||||
message = UnsubscribeGenerator().add_header_to_message(alias, contact, message)
|
||||
assert original_header == message[headers.LIST_UNSUBSCRIBE]
|
||||
|
|
Loading…
Reference in a new issue