diff --git a/lib/private/AllConfig.php b/lib/private/AllConfig.php
index 58706e290fb9ba8be8e5c63f96d56c330818fe88..09520aae2a9dc66f738b7626e8269ab4f38f14bb 100644
--- a/lib/private/AllConfig.php
+++ b/lib/private/AllConfig.php
@@ -459,6 +459,38 @@ class AllConfig implements \OCP\IConfig {
 		return $userIDs;
 	}
 
+	/**
+	 * Determines the users that have the given value set for a specific app-key-pair
+	 *
+	 * @param string $appName the app to get the user for
+	 * @param string $key the key to get the user for
+	 * @param string $value the value to get the user for
+	 * @return array of user IDs
+	 */
+	public function getUsersForUserValueCaseInsensitive($appName, $key, $value) {
+		// TODO - FIXME
+		$this->fixDIInit();
+
+		$sql  = 'SELECT `userid` FROM `*PREFIX*preferences` ' .
+			'WHERE `appid` = ? AND `configkey` = ? ';
+
+		if($this->getSystemValue('dbtype', 'sqlite') === 'oci') {
+			//oracle hack: need to explicitly cast CLOB to CHAR for comparison
+			$sql .= 'AND LOWER(to_char(`configvalue`)) = LOWER(?)';
+		} else {
+			$sql .= 'AND LOWER(`configvalue`) = LOWER(?)';
+		}
+
+		$result = $this->connection->executeQuery($sql, array($appName, $key, $value));
+
+		$userIDs = array();
+		while ($row = $result->fetch()) {
+			$userIDs[] = $row['userid'];
+		}
+
+		return $userIDs;
+	}
+
 	public function getSystemConfig() {
 		return $this->systemConfig;
 	}
diff --git a/lib/private/User/Manager.php b/lib/private/User/Manager.php
index 4243ced2e988477e5512fe3f8a6828dabcb5a3bc..f1a2029a7d51d5c58243aa5eb4d9cc09bea673b3 100644
--- a/lib/private/User/Manager.php
+++ b/lib/private/User/Manager.php
@@ -589,7 +589,7 @@ class Manager extends PublicEmitter implements IUserManager {
 	 * @since 9.1.0
 	 */
 	public function getByEmail($email) {
-		$userIds = $this->config->getUsersForUserValue('settings', 'email', $email);
+		$userIds = $this->config->getUsersForUserValueCaseInsensitive('settings', 'email', $email);
 
 		$users = array_map(function($uid) {
 			return $this->get($uid);
diff --git a/tests/lib/User/ManagerTest.php b/tests/lib/User/ManagerTest.php
index e0b6aadf2ac17015b7bcc74fab9f21156513662f..284f7b173bc29dc696d4f6ee4186183dbf6b00af 100644
--- a/tests/lib/User/ManagerTest.php
+++ b/tests/lib/User/ManagerTest.php
@@ -8,6 +8,7 @@
  */
 
 namespace Test\User;
+use OC\AllConfig;
 use OC\User\Database;
 use OC\User\Manager;
 use OCP\IConfig;
@@ -670,12 +671,12 @@ class ManagerTest extends TestCase {
 	}
 
 	public function testGetByEmail() {
-		$config = $this->getMockBuilder(IConfig::class)
+		$config = $this->getMockBuilder(AllConfig::class)
 			->disableOriginalConstructor()
 			->getMock();
 		$config
 			->expects($this->at(0))
-			->method('getUsersForUserValue')
+			->method('getUsersForUserValueCaseInsensitive')
 			->with('settings', 'email', 'test@example.com')
 			->will($this->returnValue(['uid1', 'uid99', 'uid2']));