diff --git a/changelog.d/13263.bugfix b/changelog.d/13263.bugfix
new file mode 100644
index 0000000000..91e1d1e7eb
--- /dev/null
+++ b/changelog.d/13263.bugfix
@@ -0,0 +1 @@
+Fix a bug introduced in Synapse 1.15.0 where adding a user through the Synapse Admin API with a phone number would fail if the "enable_email_notifs" and "email_notifs_for_new_users" options were enabled. Contributed by @thomasweston12.
diff --git a/synapse/rest/admin/users.py b/synapse/rest/admin/users.py
index f0614a2897..ba2f7fa6d8 100644
--- a/synapse/rest/admin/users.py
+++ b/synapse/rest/admin/users.py
@@ -373,6 +373,7 @@ class UserRestServletV2(RestServlet):
if (
self.hs.config.email.email_enable_notifs
and self.hs.config.email.email_notif_for_new_users
+ and medium == "email"
):
await self.pusher_pool.add_pusher(
user_id=user_id,
diff --git a/tests/rest/admin/test_user.py b/tests/rest/admin/test_user.py
index e32aaadb98..97693cd1e2 100644
--- a/tests/rest/admin/test_user.py
+++ b/tests/rest/admin/test_user.py
@@ -1636,6 +1636,41 @@ class UserRestTestCase(unittest.HomeserverTestCase):
)
self.assertEqual(len(pushers), 0)
+ @override_config(
+ {
+ "email": {
+ "enable_notifs": True,
+ "notif_for_new_users": True,
+ "notif_from": "test@example.com",
+ },
+ "public_baseurl": "https://example.com",
+ }
+ )
+ def test_create_user_email_notif_for_new_users_with_msisdn_threepid(self) -> None:
+ """
+ Check that a new regular user is created successfully when they have a msisdn
+ threepid and email notif_for_new_users is set to True.
+ """
+ url = self.url_prefix % "@bob:test"
+
+ # Create user
+ body = {
+ "password": "abc123",
+ "threepids": [{"medium": "msisdn", "address": "1234567890"}],
+ }
+
+ channel = self.make_request(
+ "PUT",
+ url,
+ access_token=self.admin_user_tok,
+ content=body,
+ )
+
+ self.assertEqual(201, channel.code, msg=channel.json_body)
+ self.assertEqual("@bob:test", channel.json_body["name"])
+ self.assertEqual("msisdn", channel.json_body["threepids"][0]["medium"])
+ self.assertEqual("1234567890", channel.json_body["threepids"][0]["address"])
+
def test_set_password(self) -> None:
"""
Test setting a new password for another user.
|