我正在尝试使用asp.net中的创建用户向导创建基于本文www.4guysfromrolla.com/articles/062508-1.aspx的新帐户,禁用他的帐户立即登录并在注册后立即发送电子邮件有关电子邮件的验证和一切运作良好。
对不起家伙我没有min rep上传图片所以我现在只能提供2个链接。
现在问题是发送给用户的电子邮件,其中包含 USERID :
以下是它如何添加到数据库中所示:
http://img829.imageshack.us/img829/4410/54303910.png
现在,在用户被禁用的Asp.Net配置中,它显示如下:
http://img41.imageshack.us/img41/9286/74707709.png
正如您在上图中看到的那样,在用户名旁边没有选中勾号(这表示用户已被禁用,他需要使用电子邮件验证激活他的帐户)
因此,当用户点击点击后,它会向我显示 user is not found in the database
。
我真的很难过,网上的每一个人都向我展示了发送电子邮件的同一篇文章。但他们都没有工作。
或者我做错了什么?我想让你们中的一些人了解我。
以下是我创建用户和发送电子邮件的代码:
Protected Sub CreateUserWizard1_SendingMail(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.MailMessageEventArgs) Handles CreateUserWizard1.SendingMail
Dim newUserAccount As MembershipUser = Membership.GetUser(CreateUserWizard1.UserName)
Dim newUserAccountId As Guid = DirectCast(newUserAccount.ProviderUserKey, Guid)
Dim domainName As String = Request.Url.GetLeftPart(UriPartial.Authority) + Request.ApplicationPath
Dim confirmationPage As String = "EmailConfirmation.aspx?UserID=" & newUserAccountId.ToString()
Dim url As String = domainName & confirmationPage
e.Message.Body = e.Message.Body.Replace("<%VerificationUrl%>", url)
Dim smtp As New SmtpClient()
smtp.Host = "smtp.gmail.com"
smtp.Port = 587
smtp.UseDefaultCredentials = False
smtp.Credentials = New System.Net.NetworkCredential("myemail@gmail.com", "gmailpassword")
smtp.EnableSsl = True
smtp.Send(e.Message)
e.Cancel = True
End Sub
EmailConfirmation.aspx:
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
'Make sure that a valid querystring value was passed through
If String.IsNullOrEmpty(Request.QueryString("UserID")) OrElse Not Regex.IsMatch(Request.QueryString("UserID"), "[0-9a-f]{8}\-([0-9a-f]{4}\-){3}[0-9a-f]{12}") Then
lblMessage.Text = "An invalid ID value was passed in through the querystring."
Else
'ID exists and is kosher, see if this user is already approved
'Get the ID sent in the querystring
Dim userId As Guid = New Guid(Request.QueryString("UserID"))
'Get information about the user
Dim userInfo As MembershipUser = Membership.GetUser(userId)
If userInfo Is Nothing Then
'Could not find user!
lblMessage.Text = "The user account could not be found in the membership database."
Else
'User is valid, approve them
userInfo.IsApproved = True
Membership.UpdateUser(userInfo)
'Display a message
lblMessage.Text = "Your account has been verified and you can now log into the site."
End If
End If
End Sub
答案 0 :(得分:0)
这是我的解决方案
Dim ConString As String = ConfigurationManager.ConnectionStrings("HDIConnectionString").ConnectionString
Dim UserID As String
Dim i As Integer = 0
If (Request.QueryString("UserID") IsNot Nothing) Then
UserID = Request.QueryString("UserID")
Dim con As New SqlConnection(ConString)
Dim cmd As New SqlCommand("UPDATE Users SET IsApproved=1 WHERE UserID=@UserID ", con)
cmd.Parameters.AddWithValue("@UserID", UserID)
con.Open()
i = cmd.ExecuteNonQuery()
con.Close()
End If
If i > 0 Then
lblMessage.Text = "Your account has been approved. Please <a href=""Login.aspx"">login</a> to the site."
Else
lblMessage.Text = "User account could not be found..."
End If