Я работаю над веб-приложением в социальной сети, и у меня возникла ситуация, когда мне нужно повторно отправить электронные письма с напоминанием пользователям, которые не активировали свои электронные письма. Проблема заключается в том, что когда я исследовал БД, я обнаружил, что много писем дублируются (по-видимому, не было никакой проверки на уникальность электронной почты. Поэтому мне нужно знать, как извлечь эти поля из db: имя пользователя, код активации электронной почты, так что я могу повторно отправить электронные письма активации, и для случая дублированных писем мне нужно вернуть только один из них (т. е. если у меня есть пользователь john с электронной почтой [email protected] и пользователем john1 с электронной почтой [email protected] тоже , я хочу получить только из этих johns независимо от john1 или two), поэтому я подумал о том, чтобы скомпоновать SQL-запрос (Group By Email). Дело в том, что я не могу выбрать другие поля, которые не находятся в разделе group by решение, которое у меня есть, это тот, который мне не нравится, я создал список и каждый раз, когда мне нужно отправить электронное письмо пользователю, итерации по всему списку, чтобы убедиться, что это письмо не существует, если его там нет, я отправляю его, а затем добавляю письмо в список. Что-то вроде следующего: if (! EmailIsInList (электронная почта)) { SendActivationEmail (email); AddEmailToList (электронная почта) } else {DoNotSend); }Работа вокруг группы по ограничению количества сообщений
На самом деле я решил проблему таким образом, но мне не нравится мое решение. Есть идеи?
Можете ли вы описать структуру таблиц? Все поля (имя пользователя, код активации электронной почты, адрес электронной почты, флаг активации) в той же таблице или они находятся в отдельных таблицах (ex User table (UserId, UserName, Email, IsActivated) и таблица E-mail (EmailId, UserId, Date, Message))? –
Вот структура таблиц. Таблица 1 пользователи: ID пользователя pk Email РегистрацияЗабыли пароль? Таблица 2 UserActivation: ID pk, UserID fk ссылки Пользователи (UserID), EmailActivated бит, Код эл. Почты. Теперь мне нужно, чтобы результирующий набор выглядел следующим образом: UserID - Email - EmailCode - UserName (без лишних сообщений электронной почты) – Galilyou
Не знаете, почему это проблема. Слишком много писем, засоряющих вашу систему? Пользователи жалуются на электронные письма на счетах, которые они не хотят использовать? Вы хотите, чтобы учетная запись пользователя активировалась на основе ответа электронной почты. Кого волнует, если два пользователя делят учетную запись электронной почты? – JeffO