mirror of
https://github.com/zulip/zulip.git
synced 2025-11-02 13:03:29 +00:00
email: Convert send_email to use formataddr.
Changed the requirements for UserProfile in order to allow use of the formataddr function in send_mail.py. Converted send_email to use formataddr in conjunction with the commit that strengthened requirements for full_name, such that they can now be used in the to field of emails. Fixes #4676.
This commit is contained in:
committed by
Tim Abbott
parent
c25dcf048d
commit
4d4b6b8319
@@ -43,9 +43,7 @@ def build_email(template_prefix: str, to_user_ids: Optional[List[int]]=None,
|
||||
assert (to_user_ids is None) ^ (to_emails is None)
|
||||
if to_user_ids is not None:
|
||||
to_users = [get_user_profile_by_id(to_user_id) for to_user_id in to_user_ids]
|
||||
# Change to formataddr((to_user.full_name, to_user.email)) once
|
||||
# https://github.com/zulip/zulip/issues/4676 is resolved
|
||||
to_emails = [to_user.delivery_email for to_user in to_users]
|
||||
to_emails = [formataddr((to_user.full_name, to_user.delivery_email)) for to_user in to_users]
|
||||
|
||||
if context is None:
|
||||
context = {}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
from contextlib import contextmanager
|
||||
from email.utils import parseaddr
|
||||
from typing import (cast, Any, Dict, Iterable, Iterator, List, Optional,
|
||||
Tuple, Union, Set)
|
||||
|
||||
@@ -360,6 +361,7 @@ class ZulipTestCase(TestCase):
|
||||
"""
|
||||
if full_name is None:
|
||||
full_name = email.replace("@", "_")
|
||||
|
||||
payload = {
|
||||
'full_name': full_name,
|
||||
'password': password,
|
||||
@@ -383,7 +385,7 @@ class ZulipTestCase(TestCase):
|
||||
# This is a bit of a crude heuristic, but good enough for most tests.
|
||||
url_pattern = settings.EXTERNAL_HOST + r"(\S+)>"
|
||||
for message in reversed(outbox):
|
||||
if email_address in message.to:
|
||||
if email_address in parseaddr(message.to)[1]:
|
||||
return re.search(url_pattern, message.body).groups()[0]
|
||||
else:
|
||||
raise AssertionError("Couldn't find a confirmation email.")
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from email.utils import parseaddr
|
||||
|
||||
from typing import (Any, Dict, Iterable, List, Mapping,
|
||||
Optional, TypeVar, Union)
|
||||
|
||||
@@ -983,7 +985,8 @@ class ActivateTest(ZulipTestCase):
|
||||
from django.core.mail import outbox
|
||||
self.assertEqual(len(outbox), 1)
|
||||
for message in outbox:
|
||||
self.assertEqual(set([hamlet.delivery_email, iago.delivery_email]), set(message.to))
|
||||
to_fields = [parseaddr(to_field)[1] for to_field in message.to]
|
||||
self.assertEqual(set([hamlet.delivery_email, iago.delivery_email]), set(to_fields))
|
||||
self.assertEqual(ScheduledEmail.objects.count(), 0)
|
||||
|
||||
class RecipientInfoTest(ZulipTestCase):
|
||||
|
||||
Reference in New Issue
Block a user