2013-06-04 39 views
11

Làm cách nào để gửi email chào mừng đến người dùng đăng ký trên ứng dụng django (sử dụng django-allauth). Nếu tôi đặt ACCOUNT_EMAIL_VERIFICATION = ("mandatory"), nó hoạt động tốt và người dùng nhận được email xác minh. Nhưng vì tôi không yêu cầu bất kỳ xác minh email nào nên người dùng chỉ cần đăng ký và nhận email chào mừng.Django-allauth: gửi email chào mừng khi đăng ký (không cần xác minh)

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' 

Có bất kỳ thiết lập tôi đã bỏ lỡ mà gửi mail đăng ký chào đón? Hay tôi phải vượt qua nó qua quan điểm của tôi? Cant dường như tìm ra con đường cho việc này. Bất kỳ sự trợ giúp nào đều sẽ là tuyệt vời. Cảm ơn.

Trả lời

23

Không có cài đặt nào như vậy, nhưng bạn có thể nghe tín hiệu user_signed_up, sẽ có các thông số userrequest trong thông số. Sau khi nhận được email gửi cho người dùng.

Đặt mã dưới đây một số nơi trong models.py file:

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

Cảm ơn bạn đã trả lời! đã làm việc !! Để gửi email tôi sử dụng send_mail ('Chào mừng', 'Đăng ký của bạn tại abc.com thành công. Tên người dùng của bạn là% s'% user.username, 'Xin chào <[email protected]>', [user.email]) Mặc dù tôi không biết cách sử dụng mẫu ở đây (không phải là một dòng văn bản) cho phần thân của email và tôi sẽ tìm ra nó, giải pháp của bạn đã thực hiện thủ thuật! Cảm ơn –

7

allauth thực sự chỉ gửi mail xác nhận. Tuy nhiên, nó phân biệt giữa thư xác nhận (đăng ký) đầu tiên và các thư sau (ví dụ: khi người dùng thêm địa chỉ email thứ hai).

Đối với mục đích này, allauth có "xác nhận email khi đăng ký" mẫu (account/email/email_confirmation_signup_message.txt, account/email/email_confirmation_signup_subject.txt).

Khi sử dụng các mẫu dựng sẵn, thư xác nhận/đăng ký/thư chào mừng lai này giống với mẫu xác nhận email thông thường, nhưng bạn có thể ghi đè nó và đặt thông điệp chào mừng của bạn vào đó. Ngoài ra, hãy đặt ACCOUNT_EMAIL_VERIFICATION thành "optional".

Nếu tất cả điều này không phù hợp với nhu cầu của bạn, bạn có thể kết nối với tín hiệu user_signed_up và gửi thư chào mừng đơn giản.

+0

Cảm ơn, tôi không thể sử dụng "tùy chọn" vì tôi không muốn gửi email xác nhận khi đăng ký (ngay cả khi người dùng không xác minh). Có lẽ Im sử dụng tín hiệu user_signed_up, điều đó làm cho nó hoạt động. –

+0

bạn có thể chia sẻ tín hiệu user_signed_up của mình không? – milan

Các vấn đề liên quan