使用Google App Enigne的邮件API获取django-allauth电子邮件

时间:2016-04-19 09:22:51

标签: python django google-app-engine django-allauth

我正在开发一个托管在Google App Engine上的项目,并将Django-allauth用于我的用户系统。

现在我只是在settings.py

中使用以下设置
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = DEFAULT_FROM_EMAIL = 'myMail@gmail.com'
EMAIL_HOST_PASSWORD = 'password'

但我想改用GAE的Mail API,以便我可以使用所有可用的配额。

要发送包含GAE API的电子邮件,我可以执行以下操作:

sender_address = "myMail@gmail.com"
subject = "Subject"
body = "Body."
user_address = "user@gmail.com"
mail.send_mail(sender_address, user_address, subject, body)

据我所知allauth documentation,我可以“通过覆盖帐户适配器的send_mail方法(allauth.account.adapter.DefaultAccountAdapter)来连接自己的自定义机制。”

但我真的很困惑如何去做这件事。

重置函数的位置是否重要?

非常感谢任何其他提示。

我的解决方案

我做了什么让Django-allauth电子邮件系统与Google App Engine mail API

一起使用

在我的“首页”应用中创建了一个auth.py文件:

from allauth.account.adapter import DefaultAccountAdapter
from google.appengine.api import mail


class MyAccountAdapter(DefaultAccountAdapter):

    def send_mail(self, template_prefix, email, context):
        msg = self.render_mail(template_prefix, email, context)

        sender_address = "myEmailAddress@gmail.com"
        subject = msg.subject
        body = msg.body
        user_address = email
        mail.send_mail(sender_address, user_address, subject, body)

要将您的电子邮件用作GAE邮件API的发件人,请务必记住authorize the email作为发件人

最后,正如e4c5指出的那样,allauth必须知道这种覆盖是存在的,这在settings.py

中也是如此。
ACCOUNT_ADAPTER = 'home.auth.MyAccountAdapter'

1 个答案:

答案 0 :(得分:2)

您必须通过将以下行添加到settings.py来告诉django-allauth您的自定义适配器

ACCOUNT_ADAPTER = 'my_app.MyAccountAdapter'

注意用正确的名称替换my_app