Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用Tornado和MongoDB发送用户注册确认电子邮件?_Python_Email_Tornado - Fatal编程技术网

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

Python 如何使用Tornado和MongoDB发送用户注册确认电子邮件?,python,email,tornado,Python,Email,Tornado,我正在使用Tornado和MongoDB,我想在用户在我的应用程序中创建帐户时向他发送一封确认电子邮件 目前,我使用一个带有表单的简单XHTML页面,并使用Tornado将信息发送到我的MongoDB数据库。我想有一个中间步骤,在将数据插入数据库之前向用户发送电子邮件 我想知道,只有在用户收到电子邮件并确认其注册后,我如何才能发送此电子邮件并插入用户帐户。您需要的是激活URL。激活URL包含一个唯一的ID,可能是UUID,当用户单击激活URL时会对其进行验证 为了避免将用户数据存储在数据库中,您

我正在使用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),然后当用户确认注册时,可以从缓存中获取用户信息并将其写入数据库