我正在使用Tornado和MongoDB,我想在我的应用程序中创建一个帐户时向用户发送一封确认电子邮件.
目前,我使用带有表单的简单XHTML页面,并使用Tornado将信息发送到MongoDB数据库.我想有一个中间步骤,在将数据插入数据库之前向用户发送电子邮件.
我想知道如何在用户收到电子邮件并确认其注册后才能发送此电子邮件并插入用户帐户.
您需要的是激活URL.激活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发送电子邮件的示例.
我想知道为什么你会这样处理注册.处理注册的常用方法是:
将用户信息写入数据库,但附加了"非活动"标签.
发送电子邮件给用户.
如果用户确认注册,则将用户切换为"活动".
如果您不想写入数据库,可以写入缓存(如memcache,redis),然后当用户确认注册时,您可以从缓存中获取用户信息并将其写入数据库.