我无法使用Django非依赖GAE发送电子邮件

时间:2014-09-14 00:33:46

标签: python django google-app-engine email django-nonrel

我试图发送一封简单的电子邮件来进行用户的密码恢复,输入只是一封发送新密码的电子邮件..

但我不能......我得到这个错误

SMTPServerDisconnected: please run connect() first

我已经尝试了一些示例,例如https://bitbucket.org/andialbrecht/appengine_emailbackends/overview,但我得到了相同的错误

我真的需要这个,也许有人可以告诉我如何在我的视图中使用替代代码来发送电子邮件...我也改变了后端

EMAIL_BACKEND = 'djangoappengine.mail.EmailBackend'

但没有,我不知道如何使用这个后端:(

Plz帮助:(

1 个答案:

答案 0 :(得分:0)

  

也许有人可以告诉我如何在我的视图中使用替代代码来发送电子邮件......

我可以帮忙解决这个问题,因为看起来您尝试使用的这个存储库可能是基于早期版本的App Engine,并且由于库中某处需要更改代码而引发错误 - 或者你将字符串从库推荐的字符串(你的版本:' djangoappengine.mail.EmailBackend')更改为一个似乎不正确的字符串,因为它与存储库的作者指示您使用的是什么(他们的版本:' appengine_emailbackend.EmailBackend'),这会造成麻烦。

只要有可能,我建议您查看是否有" app-engine-y"在进入第三方库或部署其他人写入黑客第三方功能的模块或寻找高级/实验性功能(例如,首先使用数据存储,而不是远程连接到MySQL VM,除非你需要 MySQL)。如果您绝对需要该库,这是一个不同的故事,但如果您只是想发送电子邮件,Mail API就是您所需要的。这是在App Engine上发送电子邮件的便捷方式。

我将在下面假设您将用户的用户名和散列密码存储在数据存储区中的自定义User种实体中。如果您的用户使用简单的OAuth登录您的网站,则无需任何理由"重置/恢复密码":

  1. 创建<form action="/some/route" action="POST">元素 用户请求密码恢复的页面。

  2. 将代码负责处理此表单提交(他们将输入他们的电子邮件或他们所需的任何帐户信息,以便在数据存储区中的数据存储区中找到他们的User实体,该处理程序将在那条路线。

  3. 在处理程序中,生成唯一标记并将其存储在数据存储区中。在您生成的电子邮件中发送令牌并使用Mail API发送(请参阅我提供的文档链接中的示例代码)。这将允许您的用户返回您的站点,使用电子邮件中的令牌进行身份验证,然后填写表单以创建新密码。然后,您将散列此密码(使用salt)并将其存储在数据存储区中的User实体中。
  4. 我正在跳过有关如何实施密码恢复表单的详细信息&#34;,考虑到我所说的关于OAuth的内容,并且您可能真的只关心如何发送邮件。例如,在您发送的电子邮件中,您可以使用已作为查询参数插入的令牌插入指向您网站的超链接,以便用户无需复制和粘贴等。