2013-04-24 231 views
1

我正在創建一個非活動用戶,並且希望向他們發送電子郵件以激活那些帳戶,例如創建帳戶時發送的一個django註冊。發送激活電子郵件 - Django

這是我的views.py

user = User.objects.create_user(userName, userMail,userPass) 
user.is_active=False 
user.save() 
+0

如果你不想使用django註冊,你只需要看看它的代碼,並重現它實現的機制。你試過什麼了? – 2013-04-24 07:22:56

+0

我想發送像Django註冊郵件,但我不知道如何發送時,我自己創建用戶 – 2013-04-24 07:38:08

回答

1

你應該檢討sending emails局部指南。基本上,您只需使用django.core.mail中的組件在創建用戶實例後發送包含所有必要信息的激活電子郵件。

該電子郵件包含有關用戶如何激活其帳戶的更多信息,這一點很重要。 django-registration這樣做的方式是它具有與User實例相關聯的單獨模型,該實例指定了將在激活視圖中用來標識哪個用戶帳戶應該被激活的唯一標識符,即,創建GET請求將激活http://foo/accounts/activate/550e8400-e29b-41d4-a716-446655440000用戶帳號與關聯的UUID。

還有一些其他複雜的細節,使django-registration徹底和良好的拋光解決方案,儘管有點過時(即沒有基於類的觀點),所以我第二@NCao建議你花足夠的時間來檢查official repository的來源和ripoff並複製所有必要的位。

-1

基本上在用戶註冊後,您要設置user.is_active = False。

然後,您將包含用戶信息(例如,id)的URL發送到用戶的電子郵件。

當用戶點擊鏈接時,會觸發激活功能。在激活功能中,它首先根據URL(id)提取用戶的信息。然後你可以通過調用user.objects.get(id = id)來查詢用戶對象。之後,您可以設置user.is_active = True並保存用戶。

下面是發送電子郵件的代碼:從email.mime.text MimeText用於進口從 進口email.mime.multipart MimeMultipart的

fromaddr='your email address' #(Gmail here) 
    username='your user name' 
    password='your password' 
    def send_email(toaddr,id): 
     text = "Hi!\nHow are you?\nHere is the link to activate your 
     account:\nhttp://127.0.0.1:8000/register_activate/activation/?id=%s" %(id) 
     part1 = MIMEText(text, 'plain') 
     msg = MIMEMultipart('alternative') 
     msg.attach(part1) 
     subject="Activate your account " 
     msg="""\From: %s\nTo: %s\nSubject: %s\n\n%s""" % (fromaddr,toaddr,subject,msg.as_string()) 
     #Use gmail's smtp server to send email. However, you need to turn on the setting "lesssecureapps" following this link: 
     #https://www.google.com/settings/security/lesssecureapps 
     server = smtplib.SMTP('smtp.gmail.com:587') 
     server.ehlo() 
     server.starttls() 
     server.login(username,password) 
     server.sendmail(fromaddr,[toaddr],msg) 
     server.quit() 

您可能還需要檢查了這一點:https://github.com/JunyiJ/django-register-activate 希望它幫助!

+0

雖然此鏈接可能回答這個問題,最好包括答案的重要部分在這裏,並提供鏈接參考。如果鏈接頁面更改,則僅鏈接答案可能會失效。 - [來自評論](/ review/low-quality-posts/12374252) – Zulu 2016-05-17 01:51:35

+0

感謝您指出。我剛剛更新了答案。 – Junyi 2016-05-17 02:12:55