Как я могу отправить электронное письмо с подтверждением регистрации пользователя, используя Tornado и MongoDB? - PullRequest
5 голосов
/ 03 мая 2011

Я работаю с Tornado и MongoDB, и я хотел бы отправить подтверждение по электронной почте пользователю, когда он создает учетную запись в моем приложении.

На данный момент я использую простую страницу XHTML сформы, и я отправляю информацию в мою базу данных MongoDB, используя Tornado.Я хотел бы иметь промежуточный шаг, который отправляет электронное письмо пользователю перед вставкой данных в базу данных.

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

Ответы [ 2 ]

7 голосов
/ 03 мая 2011

Вам нужен URL-адрес активации. URL-адрес активации содержит уникальный идентификатор, возможно, UUID, который проверяется, когда пользователь щелкает URL-адрес активации.

Чтобы избежать сохранения пользовательских данных в базе данных, вы можете сохранить пользовательские данные в URL-адресе активации, отправленном пользователю:

import urllib
data = urllib.urlencode({'name':'joe', 'password':'1234'})
activation_url = 'http://example.com/activate?%s' % data

Но поскольку пользовательская информация отправляется в виде простого текста, этот метод очень небезопасен.

Правильный способ сделать это - сохранить информацию о пользователе вместе с флагом активации в базе данных. Когда пользователь щелкает URL-адрес активации, уникальный идентификатор проверяется, и для флага активации устанавливается значение true, что позволяет создать новую учетную запись пользователя.

Отправка электронной почты в Python довольно проста, если у вас есть доступ к SMTP-серверу или учетной записи Gmail.

Документы Python содержат примеров отправки электронной почты с Python.

5 голосов
/ 20 сентября 2011

Интересно, почему вы так поступили с регистрацией?Обычный способ обработки регистрации:

  1. Записать информацию о пользователе в базу данных, но с прикрепленной к нему меткой «неактивно».
  2. Отправить электронное письмо пользователю.
  3. Если пользователь подтверждает регистрацию, переключите его на «активный».

Если вы не хотите записывать в базу данных, вы можете записать в кеш (как memcache, redis), затем, когда пользователь подтверждает регистрацию, вы можете получить информацию о пользователе из кэша и записать ее в базу данных.

...