Как проверить регистрацию аккаунта, если емейлы не могут повторяться

можно использовать такой сервис:
http://api.temp-mail.ru/
если важно не только засабмитить форму, но и проверить получение письма об успешной регистрации/активации/etc

Примеры интеграции
Python API Wrapper GitHub - saippuakauppias/temp-mail: 📬 A python API wrapper for temp-mail.org

у себя сделал проще:
попросил админа сделать так, если отсылаю письмо на %любые символы%@наш_домен.net
то письмо форвардится на реальный ящик, с которого я в тестах, через библиотеки для работы с exchange - забираю/parse почту.

1 лайк

Вопрос некорректный, если не сказать грубее (а очень хочется :wink: ).

  1. Почему поле не может повторяться? Что вносит ограничения?
  2. Каков сценарий работы тестируемой программы?
  3. Какие модули (опишите “крупноузовО”) работают и как?

Если читать этот бурный поток нечётких мыслей, то понять можно, что вы вводите какой-то e-mail на web-странице и пытаетесь его засабмитить куда-то, причём ваша задача - проверить, что JavaScript на странице или принимающий сервер провалидируют введённое значение и выведут ошибку, если e-mail неправильный.

Если так, то непонятно, почему не могут повторяться имейлы? Первая версия в ответ на мой же собственный вопрос - это то, как идёт обработка, что, например, у вас реализовано так, что сначала введённое сравнивается с наличествующим в БД и потом - проверяется на корректность.

Если моя версия верна, то это - баг, неправильный алгоритм работы. Сначала должна быть валидация корректности имейла и лишь затем - поиск копий в БД (и, соответственно, вывод ошибки о попытке ввести уже существующий имейл).

Если же предположить, что есть тестовый e-mail, например, собственный (Beliy_Ruslan_aka_Vasya_Pupkin@domen.com ) и на этот имейл должны приходить письма с подтверждением регистрации и если в системе, которую вы используете, есть web-доступ, то можно автоматить просто - засылать самому себе на этот ящик письма, только вот между именем и знаком “эт” ставить плюс и цифры с буквами, т.к. мелкософтовый почтовый сервер отбрасывает сам плюс и всё, что до знака “@”, тем не менее, почту пропускает.

Тут, смотрю, принято выкладывать код, даже самый простой, посему - вариант изменения кода от @Beliy_Ruslan, ему просто надо чуть-чуть исправить его цикл for в методе randomString( int len ):


//чуть выше, рядом с *static Random rnd = new Random();* заданы:
//String testEmailBeginning = "Beliy_Ruslan_aka_Vasya_Pupkin";
//String testEmailEnd = "@domen.com";

//чуть выше, рядом с *static Random rnd = new Random();* заданы:
//String testEmailBeginning = "Beliy_Ruslan_aka_Vasya_Pupkin";
//String testEmailEnd = "@domen.com";

for (int i = 0; i < len; i++) {
    StringBuilder sb2 = sb.append(AB.charAt(rnd.nextInt(AB.length())));
    String resultString = testEmailBeginning + "+" + sb2 + testEmailEnd;
    if (i == len - 1) {
        System.out.println("Yes, we finally found the decision for Beliy_Ruslan!");
        System.out.println("His decision at the moment looks like: " + resultString);
    }

NB: Этот вариант {если его специально не залочили админы} использовать точно можно на Outlook-e (на Microsoft Exchange “завязанном”) и его web-морде OWA, у меня работало “на ура”, засылал письмишки на имейл (в тему которых запихивал и рандомную стрингу типа этой sb2, открывал OWA, в нём искал имейлы с темой, в которой есть sb2.toString() , если есть, то писал в лог, что пользователь получил имейл о регистрации.

1 лайк

поле не может повторяться, так как это регистрация, нельзя с одной и той же почтой сделать второй аккаунт
проверка email не нужна, просто рандомный email для возможности регистрации