> Адрес проходил проверку так как преобразовывался в верхний регистр и
> совпадал с исходным адресом (mike@example.org ), но при отправке
> письма подставлялся как есть и код восстановления уходил по
> поддельному адресу (mıke@example.orgкорень (краеугольная причина!) этой проблемы в том что в ряде случаев в базах данных хранятся (опрометчиво) только "нормализированный-варианты-email".
но при отправке -- сервис справедливо хочет использовать "оригинальный-вариант-email" а не "нормализированный", на случай вдруг нормализация испортила свойства этого email.
а откуда взять "оригинальный-вариант-email" если он не был сохранён?! вот программисты и решили (опрометчиво!) что ЯКОБЫ могут взять его прямо сразу из формы ввода пользователя. хитрые какие :-) ..
вот и выводы -- либо сохраняйте в базе данных сразу оба варианта email...
...и в любом случае после процесса верификации email -- имейте точно ввиду что-же-именно вы верифицировали.
фраза звучит бонально, но всё же программистам в неё нужно вдуматься:
процесс ВОССТАНОВЛЕНИЯ пароля -- должен ВТОЧНОСТИ быть непротеворечивым по отношению к процессу ВЕРИФИКАЦИИ email! то есть: какой email верифицировался -- вот именно он (а не якбы его "эквивалентные" версии) и должен быть использован для восстановления пароля.