使用Google App Engine的邮件API来发送django-allauth电子邮件

3

我正在使用托管在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的邮件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文档,我的理解是我可以通过覆盖账户适配器(allauth.account.adapter.DefaultAccountAdapter)的send_mail方法来连接自定义机制。

但我不太清楚该如何操作。

重写函数是否有位置要求?

非常感谢任何额外的提示。


我的解决方案

我是如何让Django-allauth电子邮件系统与Google App Engine邮件API配合使用的。

在我的“Home”应用程序中创建了一个名为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将您的电子邮件作为发件人,请记得授权此电子邮件作为发件人。
最后,正如e4c5指出的那样,allauth必须知道此覆盖存在,可以在settings.py中完成。
ACCOUNT_ADAPTER = 'home.auth.MyAccountAdapter'
1个回答

2
您需要告诉django-allauth有关您的自定义适配器的信息,方法是在settings.py中添加以下行:
ACCOUNT_ADAPTER = 'my_app.MyAccountAdapter'

请确保将“my_app”替换为正确的名称。


太好了!谢谢。我会在我全部搞清楚之后更新主要问题,以便提取有用信息,然后使用GAE API的send_mail函数。 - Martin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接