2013-04-02 88 views
1

如何讓此代碼發送新的生成密碼或用戶的舊密碼?如何製作「重置密碼」?

我想出瞭如何讓代碼發送電子郵件!發件人不是問題,但接收者是。其中EmailAdresNaar必須替換爲某人放入文本框或其他內容的電子郵件。

public void SendEmail() 
    { 



     string emailAdresVan = "invoerenSVP"; 
     string password = "invoerenSVP"; 


     MailMessage msg = new MailMessage(); 

     msg.From = new MailAddress(emailAdresVan); 
     msg.To.Add(new MailAddress(EmailAdresNaar)); 
     msg.Subject = Onderwerp; 
     msg.Body = Bericht; 
     msg.IsBodyHtml = true; 


     SmtpClient smtpClient = new SmtpClient("smtp.gmail.com", 587); 

     NetworkCredential loginInfo = new NetworkCredential(emailAdresVan, password); 


     smtpClient.EnableSsl = true; 
     smtpClient.UseDefaultCredentials = true; 
     smtpClient.Credentials = loginInfo; 

     smtpClient.Send(msg); 

     } 
    } 
} 
+0

使用'YourTextBoxControlID.Text'來獲取在文本框中輸入的值用戶並使用它。 – Shyju

+0

重置過程不應該發送新密碼或任何密碼。 http://stackoverflow.com/questions/2734367/implement-password-recovery-best-practice http://stackoverflow.com/questions/1102781/best-way-for-a-forgot-password-implementation – adt

回答

1

將數據,你需要這樣的:

msg.From = new MailAddress("[email protected]"); 
msg.To.Add(new MailAddress(UserEmailTextBox.Text)); 
msg.Subject = "New Password"; 
msg.Body = GenerateNewPassword(); 

和實例方法GenerateNewPassword()的,但你應該讓它變得更復雜返回隨機生成新密碼(你需要谷歌的不同變化實現):

public string GenerateNewPassword() 
{ 
    string new_pass = ""; 
    // generate new password 
    return new_pass; 
} 

理想情況下,你應該讓另一頁像PasswordsReset.aspx,並傳送給用戶鏈接到這個網頁與某種GUID,用戶可以自己創建新密碼。

+0

但用戶已經有一個註冊電子郵件帳戶,我不知何故需要告訴我的電子郵件帳戶,他重置鏈接到他或她放入文本框的電子郵件的密碼。 – user2235949

+0

這是您需要自行定義的商業邏輯。你現在看到爲什麼你需要'PasswordsReset.aspx' - 不允許任何用戶重置其他用戶的密碼。您需要發送用戶GUID並將其保存到數據庫中,並且在用戶關注鏈接並重置密碼後,您可以在代碼隱藏中將新密碼保存到用戶在PasswordsReset頁面上提供的密碼。 –