diff --git a/zerver/lib/actions.py b/zerver/lib/actions.py index 6aa6e1baa6..324800844b 100644 --- a/zerver/lib/actions.py +++ b/zerver/lib/actions.py @@ -2696,7 +2696,7 @@ def notify_subscriptions_added(user_profile: UserProfile, is_web_public=stream.is_web_public, is_announcement_only=stream.is_announcement_only, color=subscription.color, - email_address=encode_email_address(stream), + email_address=encode_email_address(stream, show_sender=True), desktop_notifications=subscription.desktop_notifications, audible_notifications=subscription.audible_notifications, push_notifications=subscription.push_notifications, @@ -3557,7 +3557,7 @@ def do_rename_stream(stream: Stream, # date field in all cases. cache_delete_many( to_dict_cache_key_id(message.id) for message in messages) - new_email = encode_email_address(stream) + new_email = encode_email_address(stream, show_sender=True) # We will tell our users to essentially # update stream.name = new_name where name = old_name @@ -4679,6 +4679,8 @@ def gather_subscriptions_helper(user_profile: UserProfile, if not sub["active"] and user_profile.is_guest: subscribers = None + email_address = encode_email_address_helper(stream["name"], stream["email_token"], + show_sender=True) stream_dict = {'name': stream["name"], 'in_home_view': not sub["is_muted"], 'is_muted': sub["is_muted"], @@ -4699,7 +4701,7 @@ def gather_subscriptions_helper(user_profile: UserProfile, 'stream_weekly_traffic': get_average_weekly_stream_traffic(stream["id"], stream["date_created"], recent_traffic), - 'email_address': encode_email_address_helper(stream["name"], stream["email_token"]), + 'email_address': email_address, 'history_public_to_subscribers': stream['history_public_to_subscribers']} if subscribers is not None: diff --git a/zerver/lib/email_mirror_helpers.py b/zerver/lib/email_mirror_helpers.py index f38a0d40b0..2b2d6e3e9a 100644 --- a/zerver/lib/email_mirror_helpers.py +++ b/zerver/lib/email_mirror_helpers.py @@ -26,10 +26,10 @@ def get_email_gateway_message_string_from_address(address: str) -> str: return msg_string -def encode_email_address(stream: Stream) -> str: - return encode_email_address_helper(stream.name, stream.email_token) +def encode_email_address(stream: Stream, show_sender: bool=False) -> str: + return encode_email_address_helper(stream.name, stream.email_token, show_sender) -def encode_email_address_helper(name: str, email_token: str) -> str: +def encode_email_address_helper(name: str, email_token: str, show_sender: bool=False) -> str: # Some deployments may not use the email gateway if settings.EMAIL_GATEWAY_PATTERN == '': return '' @@ -52,6 +52,9 @@ def encode_email_address_helper(name: str, email_token: str) -> str: else: encoded_token = email_token + if show_sender: + encoded_token += ".show-sender" + return settings.EMAIL_GATEWAY_PATTERN % (encoded_token,) def decode_email_address(email: str) -> Tuple[str, Dict[str, bool]]: diff --git a/zerver/tests/test_email_mirror.py b/zerver/tests/test_email_mirror.py index f682851ace..3050af1d14 100644 --- a/zerver/tests/test_email_mirror.py +++ b/zerver/tests/test_email_mirror.py @@ -150,6 +150,14 @@ class TestEncodeDecode(ZulipTestCase): token = decode_email_address(stream_to_address)[0] self.assertEqual(token, stream.email_token) + def test_encode_with_show_sender(self) -> None: + stream = get_stream("Denmark", get_realm("zulip")) + stream_to_address = encode_email_address(stream, show_sender=True) + + token, options = decode_email_address(stream_to_address) + self._assert_options(options, show_sender=True) + self.assertEqual(token, stream.email_token) + class TestGetMissedMessageToken(ZulipTestCase): def test_get_missed_message_token(self) -> None: with self.settings(EMAIL_GATEWAY_PATTERN="%s@example.com"):