我正在使用托管在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'