【发布时间】:2014-07-30 15:02:50
【问题描述】:
我正在开发一个单页应用程序。
在应用程序结束时,用户可以提交他的联系信息(姓名、电话号码等)。这会发送一封电子邮件并将页面修改为“感谢提交 [...]”页面。
问题是,客户端可以按返回按钮并重新发送电子邮件。
有没有办法防止这种垃圾邮件?
代码
Sub BT_Send(sender As Object, e As EventArgs) Handles BT_Send.Click
Try
'Creating the Email Message
Dim mailMessage As New MailMessage()
mailMessage.To.Add("SomeOne@a.com")
mailMessage.From = New MailAddress("Robot@a.com", "Robot")
mailMessage.Subject = "Test"
mailMessage.IsBodyHtml = True
mailMessage.Body = LBL_Emailbody.Text & _
"<br><br><br><div style=""font-size: 0.7em;"">Robot speaking, I will not answer if you send me a message.</div>"
Dim smtpClient As New SmtpClient("Something.com")
smtpClient.Send(mailMessage)
PNL_Before.Visible = False
PNL_After.Visible = True
Catch ex As Exception
LBL_errorEmail.Visible = True
'Should never happen...
End Try
End sub
【问题讨论】:
-
您可以存储一个cookie来表明用户已经使用了表单,当您检测到该cookie时,不允许该表单。
-
有一些方法...您可以保留用户发送的最后一封电子邮件,并避免重新发送非常接近的联系人。
-
@fahadash 如果用户禁用了 cookie 怎么办?
-
@Aristos 保留最后一封电子邮件在哪里? (如果你的意思是把它放在接收端,那么他仍然可以发送它。如果它带有 cookie,用户可以禁用 cookie 并仍然这样做)
-
您可以将它们保存在数据库中,如果您没有数据库,一种快速简便的方法是保存在静态变量上(例如字典)。静态变量可以保存每个池的最后一封电子邮件,并且在重新编译时会丢失,但您可以做一些工作。
标签: asp.net vb.net single-page-application