2010-05-24 32 views
8

Tôi tò mò nếu có cách gửi email kích hoạt bằng tên người dùng, mật khẩu bằng cách sử dụng đăng ký django. Đầu tiên tôi nghĩ về việc sửa đổi mẫu đăng ký nhưng tôi cần một số ví dụ.gửi email kích hoạt với đăng ký django

+0

KHÔNG gửi mật khẩu người dùng trong email. –

Trả lời

11

django-registration sử dụng đoạn mã sau, trong nội bộ, xử lý gửi email:

send_mail(subject, message, settings.DEFAULT_FROM_EMAIL, [self.user.email]) 

Nếu bạn muốn làm việc, bạn sẽ phải xác định các giá trị trong DEFAULT_FROM_EMAIL settings.py của bạn.

Ngoài ra, lưu ý những điều sau:

Mail được gửi bằng cách sử dụng máy chủ SMTP và cảng quy định trong EMAIL_HOST và thiết lập EMAIL_PORT. Cài đặt EMAIL_HOST_USER và EMAIL_HOST_PASSWORD, nếu được đặt, được sử dụng để xác thực với máy chủ SMTP và cài đặt EMAIL_USE_TLS kiểm soát xem kết nối an toàn có được sử dụng hay không.

Vì vậy, để đưa ra một ví dụ, đây là những gì tôi đã sử dụng trong một file settings.py sử dụng tài khoản gmail:

EMAIL_HOST = 'smtp.gmail.com' 
EMAIL_PORT = 465 
EMAIL_USE_TLS = True 

EMAIL_HOST_USER = '[email protected]' 
EMAIL_HOST_PASSWORD = 'my_emails_password' 

django-registration sau đó sẽ có thể gửi email.

+6

Và, chỉ để ghi lại, cho bất kỳ ai thiết lập email - ** không ** phạm sai lầm tôi đã làm, sử dụng dấu ngoặc kép quanh cổng, như trong 'EMAIL_PORT = '587''. Điều đó khiến tôi mất vài giờ gỡ lỗi ... –

+0

nhờ mẹo của bạn, tôi đã kiểm tra lại cấu hình email không đúng của mình - chỉ để khám phá 4 dòng sau khi thiết lập tài khoản gmail, tôi đã thiết lập một số tài khoản localhost vô nghĩa ! Vấn đề? Giải quyết. – bharal

+2

Tôi nghĩ chúng ta phải sử dụng 'EMAIL_PORT = 587' khi' EMAIL_USE_TLS = True' –

3

EMAIL_PORT = 465 đã hoạt động cách đây vài năm. Bây giờ bạn cần sử dụng cổng 587 với gmail. Lý do: Django không hỗ trợ SMTP với SSL ngay từ đầu. Chỉ lệnh STARTTLS được hỗ trợ SAU KHI kết nối văn bản thuần được thiết lập. Gmail, tuy nhiên, không còn hỗ trợ tùy chọn này trên cổng 465.

1

Hy vọng điều này sẽ giúp ai đó. Sau khi xử lý sự cố trong nửa giờ, tôi nhận ra rằng tôi đã phải tuyên bố một cách rõ ràng này là tốt khi sử dụng django-đăng -

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'

0

django-register-activate thực hiện một chức năng tương tự như đăng ký django. Về cơ bản nó cung cấp mã cho người dùng đăng ký, xác minh email và kích hoạt, đăng nhập người dùng và đăng xuất người dùng.

Nếu bạn cần ví dụ để triển khai mã của riêng mình, bạn có thể kiểm tra views.py và forms.py trong register_activate để biết một số gợi ý.

Hy vọng câu trả lời sẽ hữu ích. Hãy cho tôi biết nếu bạn có thêm câu hỏi.

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