2013-06-04 11 views
11

djangoアプリにサインアップしたユーザー(django-allauthを使用)にようこそメールを送信するにはどうすればよいですか? ACCOUNT_EMAIL_VERIFICATION = ("mandatory")と設定すると正常に動作し、ユーザーに確認メールが届きます。しかし、私は電子メールの検証が必要ないので、ユーザーはサインアップして歓迎のメールを受け取るべきです。Django-allauth:登録時にウェルカムメールを送信します(確認なし)

settings.py-

ACCOUNT_AUTHENTICATION_METHOD = ("email") 
ACCOUNT_EMAIL_VERIFICATION = ("none") 
ACCOUNT_SIGNUP_PASSWORD_VERIFICATION = False 
ACCOUNT_UNIQUE_EMAIL = True 
ACCOUNT_USERNAME_REQUIRED = False 
EMAIL_CONFIRMATION_SIGNUP = True 
ACCOUNT_EMAIL_REQUIRED =True 
LOGIN_REDIRECT_URL = '/' 
LOGOUT_URL = '/' 
ACCOUNT_LOGOUT_ON_GET =False 
ACCOUNT_LOGOUT_REDIRECT_URL = '/' 
SOCIALACCOUNT_QUERY_EMAIL = (ACCOUNT_EMAIL_REQUIRED) 
SOCIALACCOUNT_AUTO_SIGNUP = True 
SOCIALACCOUNT_AVATAR_SUPPORT = ('avatar' in INSTALLED_APPS) 
EMAIL_USE_TLS = True 
EMAIL_HOST = 'smtp.gmail.com' 
EMAIL_HOST_USER = '##' 
EMAIL_HOST_PASSWORD = '##' 
EMAIL_PORT = 587 
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' 

歓迎サインアップメールを送信し、私は逃した任意の設定はありますか?それとも私の見解を通らなければならないのですか?カントはこのための方法を理解しているようだ。どんな助けも素晴らしいだろう。ありがとう。

答えて

23

いいえこのような設定はありませんが、信号を聞くことができます。この信号のパラメータは、userrequestです。受信したら、ユーザーに電子メールを送信します。

models.pyファイルに以下のコードいくつかの場所を置く:

from allauth.account.signals import user_signed_up 
from django.dispatch import receiver 

@receiver(user_signed_up, dispatch_uid="some.unique.string.id.for.allauth.user_signed_up") 
def user_signed_up_(request, user, **kwargs): 
    # user signed up now send email 
    # send email part - do your self 
+0

ありがとうございました!それは働いた!あなたのユーザ名は%user.usernameです、 'Hello <[email protected]>'、[user.email])あなたはsend_mailを使用してメールを送信します( 'ようこそ'、 'abc.comでの登録は成功しました。 電子メールの本文にテンプレートの使用方法(1行ではなく)を使用する方法はわかりましたが、私はそれを理解しますが、あなたのソリューションはそのトリックでした! Thanks –

7

allauthは確かにのみ確認メールを送信します。しかし、それは、最初の(サインアップ)確認メールとそれに続くもの(例えば、ユーザが第2のメールアドレスを追加するとき)を区別する。

この目的のために、allauthは「登録時にメールで確認する」 テンプレート(account/email/email_confirmation_signup_message.txtaccount/email/email_confirmation_signup_subject.txt)を持っています。

組み込みテンプレートを使用する場合、このハイブリッド確認/サインアップ/ウェルカムメールは通常のメール確認テンプレートと同じですが、それを上書きしてウェルカムメッセージをそこに入れることができます。さらに、ACCOUNT_EMAIL_VERIFICATION"optional"に設定します。

このすべてがあなたのニーズに合わない場合は、user_signed_up信号に接続して、平素の歓迎メールをご自分で送信してください。

+0

ありがとう、私は(ユーザーが確認しなくても)サインアップ時に確認メールを送信したくないため、「オプション」を使用することはできません。多分私はuser_signed_up信号を使用して、それは動作させた。 –

+0

あなたのuser_signed_up信号を共有できますか? – milan

関連する問題