如何使用Tornado和MongoDB发送用户注册确认电子邮件?

时间:2011-05-02 20:41:49

标签: python email tornado

我正在使用Tornado和MongoDB,我希望在用户在我的应用程序中创建帐户时向用户发送确认电子邮件。

目前,我使用带有表单的简单XHTML页面,并使用Tornado将信息发送到MongoDB数据库。我希望有一个中间步骤,在将数据插入数据库之前向用户发送电子邮件。

我想知道如何在用户收到电子邮件并确认其注册后,才能发送此电子邮件并插入用户帐户。

2 个答案:

答案 0 :(得分:7)

您需要的是激活网址。激活URL包含唯一ID,可能是UUID,在用户单击激活URL时会对其进行验证。

为避免将用户数据存储在数据库中,您可以将用户数据存储在发送给用户的激活URL中:

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

但由于用户信息是以纯文本形式发送的,因此这种方法非常不安全。

解决此问题的正确方法是将用户的信息与激活标志一起存储在数据库中。当用户单击激活URL时,将验证唯一ID,并将激活标志设置为true以启用新用户帐户。

当您有权访问SMTP服务器或Gmail帐户时,在Python中发送电子邮件非常简单。

Python文档包含从Python发送电子邮件的一些examples

答案 1 :(得分:5)

我想知道为什么你会这样处理注册。处理注册的常用方法是:

  1. 将用户信息写入数据库,但附加了“非活动”标签。
  2. 向用户发送电子邮件。
  3. 如果用户确认注册,则将用户切换为“有效”。
  4. 如果您不想写入数据库,可以写入缓存(如memcache,redis),然后当用户确认注册时,您可以从缓存中获取用户信息并将其写入数据库中。

相关问题