email_mirror: Parse encoded From headers with show_sender=True.

This commit is contained in:
Mateusz Mandera
2020-01-29 12:32:56 +01:00
committed by Tim Abbott
parent 7479a9b448
commit 9dcf677bf9
2 changed files with 26 additions and 1 deletions

View File

@@ -150,7 +150,7 @@ def construct_zulip_body(message: message.Message, realm: Realm, show_sender: bo
body = '(No email body)'
if show_sender:
sender = message.get("From")
sender = str(make_header(decode_header(message.get("From"))))
body = "From: %s\n%s" % (sender, body)
return body

View File

@@ -345,6 +345,31 @@ class TestStreamEmailMessagesSuccess(ZulipTestCase):
self.assertEqual(get_display_recipient(message.recipient), stream.name)
self.assertEqual(message.topic_name(), incoming_valid_message['Subject'])
def test_receive_stream_email_show_sender_utf8_encoded_sender(self) -> None:
user_profile = self.example_user('hamlet')
self.login(user_profile.email)
self.subscribe(user_profile, "Denmark")
stream = get_stream("Denmark", user_profile.realm)
stream_to_address = encode_email_address(stream)
parts = stream_to_address.split('@')
parts[0] += "+show-sender"
stream_to_address = '@'.join(parts)
incoming_valid_message = MIMEText('TestStreamEmailMessages Body')
incoming_valid_message['Subject'] = 'TestStreamEmailMessages Subject'
incoming_valid_message['From'] = '=?utf-8?b?VGVzdCBVc2Vyw7PEhcSZIDxoYW1sZXRfxJlAenVsaXAuY29tPg==?='
incoming_valid_message['To'] = stream_to_address
incoming_valid_message['Reply-to'] = self.example_email('othello')
process_message(incoming_valid_message)
message = most_recent_message(user_profile)
self.assertEqual(message.content, "From: %s\n%s" % ('Test Useróąę <hamlet_ę@zulip.com>',
"TestStreamEmailMessages Body"))
self.assertEqual(get_display_recipient(message.recipient), stream.name)
self.assertEqual(message.topic_name(), incoming_valid_message['Subject'])
def test_receive_stream_email_include_footer_success(self) -> None:
user_profile = self.example_user('hamlet')
self.login(user_profile.email)