LINQ VB.NET プロジェクトがあります。「ユーザー」というテーブルがあります。すべてのユーザーの詳細を表に入力します。これにはメールアドレスが含まれます。パスワードをランダムに生成する方法があります。テキスト ボックスに入力された内容に基づいて電子メール アドレスを呼び出し、その電子メール アドレスにパスワードを送信する別の方法があります。私の問題は、新しく生成されたパスワードを、電話したばかりの電子メール アドレスに属する行に挿入する方法がわからないことです。メールアドレスを入力するテキストボックスは「txtEmail」です。「ユーザー」の入力はすでに完了しており、パスワードを差し引いたものと見なすことができます。次のメソッドは、パスワードを生成します。
Public Function GeneratePassword() As String
'String variables tells how many characters password will contain.
Dim PasswordLength As Int16 = "12"
'Empty string will hold randomly generated password
Dim NewPassword As String = ""
'Characters allowed in this new password
Dim allowedChars As String = ""
allowedChars = "1,2,3,4,5,6,7,8,9,0"
allowedChars += "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,"
allowedChars += "a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,"
'Declare array to house each character generated from allowed list of characters
Dim sep As Char() = {","c}
Dim arr As String() = allowedChars.Split(sep)
Dim IDString As String = ""
Dim temp As String = ""
'utilize the "random" class
Dim rand As New Random()
'loop through the character generation process until PasswordLength is met
For i As Integer = 0 To Convert.ToInt32(PasswordLength) - 1
temp = arr(rand.[Next](0, arr.Length))
IDString += temp
NewPassword = IDString
Next
'places new password in variable
Return NewPassword
End Function
それに続いて、次のメソッドはデータベースから電子メール アドレスを取得し、「GeneratePassword」メソッドを呼び出して、パスワードをユーザーに電子メールで送信します。パスワードをデータベースに保存しません。これが問題です。
Protected Sub btnPassword_Click(sender As Object, e As System.EventArgs) Handles btnPassword.Click
If True Then
'establish connection with database
Dim db As New OrionDataClassesDataContext()
'initialise global variabel to take email string entered in text box
GlobalVariables.SearchUserEmail = txtEmailAddress.Text
'initialise global variable to hold email address retrieved from database
GlobalVariables.CurrentEmailAddress = (From u In db.Users
Where u.Email = SearchUserEmail
Select u.Email).FirstOrDefault
'calls generatepassword method
Dim stNewPassword As String = GeneratePassword()
'create new mailmessage to construct and sendemail
Dim Mail As New MailMessage
Try
Mail.Subject = "Your Password Has Been Reset"
'gets email address from database when user enters it
Mail.To.Add(GlobalVariables.CurrentEmailAddress)
'address for email to be sent from
Mail.From = New MailAddress("XXX@XXXX.com")
Mail.Body = "Your new pasword is: " + stNewPassword + ". Please keep this safe."
'define smpt server to be used
Dim SMTP As New SmtpClient("smtp.gmail.com")
SMTP.EnableSsl = True
'authenticate connection with smpt server and email address
SMTP.Credentials = New System.Net.NetworkCredential("XXXX@XXX.com", "XXXXX")
SMTP.Port = 587
SMTP.Send(Mail)
'alert when message is sent correctly
MsgBox("Email sent successfully!")
txtEmailAddress.Text = ""
Catch ex As Exception
'displays error message when email is not sent
MsgBox("Email not sent - Check address")
txtEmailAddress.Text = ""
End Try
End If
End Sub
私はいくつかのシナリオで遊んでいますが、私がやりたいことではない、まったく新しい行エントリを作成しようとするだけで終わるようです。アドバイスをいただければ幸いです。