【问题标题】:I can't send Emails using Django non-rel on GAE我无法在 GAE 上使用 Django non-rel 发送电子邮件
【发布时间】:2014-11-07 20:35:58
【问题描述】:
【问题讨论】:
标签:
python
django
google-app-engine
email
django-nonrel
【解决方案1】:
也许有人可以告诉我如何在我看来使用替代代码来发送电子邮件...
我可以提供帮助,因为您尝试使用的这个存储库似乎是基于 App Engine 的早期版本,并且由于库中某处所需的代码更改而引发错误 - 要么或者您将字符串从库推荐的字符串(您的版本:'djangoappengine.mail.EmailBackend')更改为似乎不正确的字符串,因为它与存储库的作者指示您使用的字符串不同(他们的版本:'appengine_emailbackend.EmailBackend'),这会造成麻烦。
只要有可能,我建议先看看是否有“app-engine-y”的方式来做某事,然后再去第三方库或部署其他人编写的模块来破解第三方功能,或寻找高级/实验性功能(例如,首先使用 Datastore,而不是远程连接到 MySQL VM,除非您需要 MySQL)。如果你绝对需要那个库,那就另当别论了,但如果你只是想发送电子邮件,Mail API 就是你所需要的。这是在 App Engine 上发送电子邮件的便捷方式。
我将在下面假设您将用户的用户名和散列密码存储在数据存储区中自定义的User-kind 实体中。如果您的用户使用简单的 OAuth 登录您的网站,则永远没有任何理由“重置/恢复密码”:
创建<form action="/some/route" action="POST"> 元素
用户请求密码恢复的页面。
放置负责处理此表单提交的代码(他们将输入他们的电子邮件或他们需要的任何帐户信息,以便您的代码在数据存储区中找到他们的User 实体,该处理程序将响应该路由.
- 在处理程序中,生成唯一令牌并将其存储在数据存储中。在您生成并使用 Mail API 发送的电子邮件中发送令牌(请参阅我提供的文档链接中的示例代码)。这将允许您的用户返回您的站点,使用电子邮件中的令牌进行身份验证,然后填写表格以创建新密码。然后,您将散列此密码(使用盐)并将其存储在数据存储区中的
User 实体中。
鉴于我所说的有关 OAuth 的内容,并且您可能真的只关心如何发送邮件,我将跳过有关如何实施“密码恢复表单”的详细信息。例如,在您发送的电子邮件中,您可以插入指向您网站的超链接,其中已插入令牌作为查询参数,这样用户就不必复制和粘贴等。