python - 将 Google App Engine 的邮件 API 用于 django-allauth 电子邮件

标签 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 的邮件 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 ,我可以“通过覆盖帐户适配器 (allauth.account.adapter.DefaultAccountAdapter) 的 send_mail 方法来连接您自己的自定义机制。”

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

将覆盖的函数放在哪里重要吗?

如有任何额外提示,我们将不胜感激。


我的解决方案

我做了什么让 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'

最佳答案

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

ACCOUNT_ADAPTER = 'my_app.MyAccountAdapter'

注意用正确的名称替换 my_app

关于python - 将 Google App Engine 的邮件 API 用于 django-allauth 电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36714106/

相关文章:

python - 列表对象时出现 Django python 错误

html - django 模板 - 在模板之间传递变量

python - GAE : Unicode JSON String Not Working in Multipart Post After Blob Upload

python - 是否可以使用 App Engine 生成并返回 ZIP 文件?

python - 增强 GAE 错误报告以包含警告

python - 在 Python 中修改 XML 文件

python - 在Django中使用haystack/elasticsearch突出显示确切的短语

python - 是否可以从 Windows 上的 unicode 路径加载 python 模块?

python - 从日期时间列表中获取最早和最晚时间

python 子进程与 openssl