1

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

私はいくつかのシナリオで遊んでいますが、私がやりたいことではない、まったく新しい行エントリを作成しようとするだけで終わるようです。アドバイスをいただければ幸いです。

4

0 に答える 0