Мне было поручено написать систему, которая определяет, есть ли указанный адрес электронной почты в списке. Проверка наличия строки в списке обычно является простой задачей, но адреса электронной почты сложны. Например, если я отправлю электронное письмо на номера personname@gmail.com
и person.name@gmail.com
, оба письма попадут в один и тот же аккаунт. Из того, что я понимаю, есть несколько других способов, которыми у пользователя могут быть две разные строки адреса электронной почты, которые в конечном итоге достигнут полученной учетной записи (замените точку подчеркиванием, добавьте символ + после имени пользователя, измените регистр букв и т. Д.).
У пользователей этой системы есть стимул предоставить несколько адресов электронной почты, которые обманывают проверку списка, но ведут к одной и той же учетной записи (personname@gmail.com
и person.name@gmail.com
). Я хочу найти способ определить, приведут ли два адреса электронной почты к одной учетной записи поставщика электронной почты (предпочтительно в Python, хотя я могу портировать любое решение).
Мое первое решение состояло в том, чтобы попытаться перечислить вышеупомянутые уловки и обратить их вспять, чтобы получить адреса электронной почты в какой-либо распространенной форме. Например, удалите все подчеркивания и точки, удалите все, что находится между первым знаком + и знаком @, и преобразуйте письмо в строчные. Проблема в том, что я не уверен на 100%, что это исчерпывающий список всех возможных уловок, и при этом я не знаю, работают ли эти уловки для всех провайдеров. Существует ли библиотека или общий метод выполнения такой проверки, который является более надежным, чем этот метод? Неужели я застрял с необходимостью выполнить эти ограниченные проверки, а затем съесть стоимость более умных пользователей, которым удалось успешно обмануть мою систему?