使用 Google App Engine 的邮件 API 作为 django-allauth 电子邮件
Using Google App Engine's Mail API for django-allauth email
我正在开发一个托管在 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,我可以"hook up your own custom mechanism by overriding the send_mail method of the account adapter (allauth.account.adapter.DefaultAccountAdapter)."
但我真的很困惑如何去做这件事。
将重写的函数放在哪里很重要吗?
如有任何额外提示,我们将不胜感激。
我的解决方案
我做了什么让 Django-allauth 电子邮件系统与 Google App Engine mail 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 的发件人,请务必记住 authorize the email 作为发件人
最后,正如 e4c5 所指出的,allauth 必须知道这个覆盖存在,这是在 settings.py
中完成的
ACCOUNT_ADAPTER = 'home.auth.MyAccountAdapter'
您必须通过将以下行添加到 settings.py
来告知 django-allauth 您的自定义适配器
ACCOUNT_ADAPTER = 'my_app.MyAccountAdapter'
注意用正确的名称替换 my_app
我正在开发一个托管在 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,我可以"hook up your own custom mechanism by overriding the send_mail method of the account adapter (allauth.account.adapter.DefaultAccountAdapter)."
但我真的很困惑如何去做这件事。
将重写的函数放在哪里很重要吗?
如有任何额外提示,我们将不胜感激。
我的解决方案
我做了什么让 Django-allauth 电子邮件系统与 Google App Engine mail 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 的发件人,请务必记住 authorize the email 作为发件人
最后,正如 e4c5 所指出的,allauth 必须知道这个覆盖存在,这是在 settings.py
中完成的ACCOUNT_ADAPTER = 'home.auth.MyAccountAdapter'
您必须通过将以下行添加到 settings.py
来告知 django-allauth 您的自定义适配器ACCOUNT_ADAPTER = 'my_app.MyAccountAdapter'
注意用正确的名称替换 my_app