2016-04-19 1 views
3

Ich arbeite an einem Projekt in Google App Engine gehostet und Django-allauth für mein Benutzersystem verwenden.Verwenden von Google App Enigne Mail-API für django-allauth E-Mail

Im Moment verwende ich nur die folgende Einstellung in settings.py

EMAIL_USE_TLS = True 
EMAIL_HOST = 'smtp.gmail.com' 
EMAIL_PORT = 587 
EMAIL_HOST_USER = DEFAULT_FROM_EMAIL = '[email protected]' 
EMAIL_HOST_PASSWORD = 'password' 

Aber ich möchte stattdessen GAE Mail-API verwenden, so dass ich den Einsatz aller verfügbaren Quoten erfolgen.

Um eine E-Mail mit GAE API senden ich tun kann, wie folgt:

sender_address = "[email protected]" 
subject = "Subject" 
body = "Body." 
user_address = "[email protected]" 
mail.send_mail(sender_address, user_address, subject, body) 

Wie ich es von der allauth documentation verstehe, kann ich „Haken Ihre eigenen Mechanismus, indem sie die send_mail Methode des Kontos Adapter zwingende (allauth.account.adapter.DefaultAccountAdapter). "

Aber ich bin wirklich verwirrt darüber, wie man das macht.

Ist es wichtig, wo ich die überschriebene Funktion platziere?

Alle zusätzlichen Tipps würden sehr geschätzt werden.


Meine Lösung

Was ich tat, Django-allauth E-Mail-System zu erhalten, mit Google App Engine mail API

eine Datei auth.py in meinem 'Home' App Erstellt arbeiten:

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 = "[email protected]" 
     subject = msg.subject 
     body = msg.body 
     user_address = email 
     mail.send_mail(sender_address, user_address, subject, body) 

Um Ihre E-Mail als Absender mit der Mail-API von GAE zu verwenden, ist es wichtig, sich an authorize the email als Absender zu erinnern

Schließlich ist, wie e4c5 darauf hingewiesen, allauth muss wissen, dass diese Überschreibung besteht, die so in settings.py

ACCOUNT_ADAPTER = 'home.auth.MyAccountAdapter' 

Antwort

2

Sie durch Zugabe erfolgt die django-allauth über Ihren kundenspezifischen Adapter sagen müssen folgende Zeile

ACCOUNT_ADAPTER = 'my_app.MyAccountAdapter' 

kümmert sich um settings.py my_app mit dem richtigen Namen

+0

Perfekt zu ersetzen! Vielen Dank. Ich werde die Hauptfrage aktualisieren, um die nützlichen Informationen zu extrahieren, um die send_mail mit GAE api zu verwenden, sobald ich alles herausgefunden habe. – Martin