2012-01-06 177 views
0

这是我的工作方法来发送电子邮件电子邮件确认asp.net

 Sub emailConfirm() 
    Dim email As String = txtMail.Text 
    Dim name As String = txtPrenom.Text + txtNom.Text 

    Dim mail As MailMessage = New MailMessage() 
    'mail.To.Add("[email protected]") 
    mail.To.Add(email) 
    mail.From = New MailAddress("[email protected]") 
    mail.Subject = "Email using Gmail" 

    Dim Body As String = "Hi " + name + ", this mail is to confirm your registration" + "Click on the link to confirm please" + " Link(check note) " 
    mail.Body = Body 

    mail.IsBodyHtml = True 
    Dim smtp As SmtpClient = New SmtpClient() 
    smtp.Host = "smtp.gmail.com" 
    smtp.Port = 587 
    smtp.Credentials = New System.Net.NetworkCredential("[email protected]", "12345") 
    smtp.EnableSsl = True 
    smtp.Send(mail) 


End Sub 

注:我想送链接包含一个唯一的标识符,并验证唯一标识符在login.aspx的

我不“知道什么时候做这个...

我发现在网络上什么有趣...

这是Vb.net

我将在稍后添加安全

感谢您的帮助!

+1

除了链接还有更多。所有链接都可以将用户发送到您的网站。您的网站将如何处理确认?也许只是链接到您的登录页面,并将第一次成功登录视为确认?也许存储一个时间敏感的键(如果你希望他们在给定的时间窗口内确认),并发送一个链接到确认页面,查询字符串中的键? – David 2012-01-06 20:38:14

+1

备注:它甚至不可能在电子邮件中包含密码。你不应该拥有密码。你应该有一个哈希版本的密码,并且应该在登录时使用哈希密码来与存储的哈希进行比较。永远不会以纯文本存储密码。无处不在。永远。 – David 2012-01-06 20:46:34

回答

2

那么,首先不要把用户名和密码放在电子邮件本身。这有点草率。

其次,大多数网站做如下操作:

  1. 用户创建帐户
  2. 电子邮件发送给用户。电子邮件中的链接包含唯一标识符,而不是用户名和密码。
  3. 用户点击链接。此时页面会测试以查看唯一标识是否有效。如果是这样,它会告诉他们谢谢您确认您的帐户。然后显示登录表单。
  4. 用户输入他们的登录凭证。

请注意,电子邮件没有发送实际的用户名/密码信息。

+0

谢谢,但如何做2.和3. – FrankSharp 2012-01-06 20:46:56

+2

@FrankSharp:在创建用户记录时,您还需要创建一个唯一的ID(作为该记录的一部分或相关记录)以存储在数据库中。该ID将作为查询字符串参数包含在电子邮件中的链接中。当用户访问确认或登录页面并在查询字符串上具有这样的ID时,将其与数据库中存储的ID进行比较。如果找到,帐户被确认。如果找不到,则重定向到适当的错误。 – David 2012-01-06 20:51:22

+0

好添加大卫。 – NotMe 2012-01-06 20:53:25