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

#python #email #tornado

#python #Адрес электронной почты #tornado

Вопрос:

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

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

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

Ответ №1:

Что вам нужно, так это 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.

Ответ №2:

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

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

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