VB.net发送电子邮件

时间:2020-06-12 20:19:10

标签: vb.net email

我创建了一个记录到数据库中并通过电子邮件发送的表单。该表格允许自己每天完成一次,并且仅在数据库中记录一次。

我注意到有时表格会两次到达电子邮件收件箱。

为阻止这种情况,我创建了一个变量并将其初始化为0。然后,仅当变量为0时,我才允许代码执行send命令。一旦执行send命令,便将变量设置为1。 / p>

Session("sent") = 0
If Session("sent") = 0 Then
   smtp.Send(mail)
   Session("sent") = 1
End If

这不能有效地阻止电子邮件两次到达。奇怪的是,双重发送正在发生随机的人。我想知道发送电子邮件所花费的秒数或2是否足以使人们第二次单击“发送”按钮,从而导致第二次通过电子邮件发送表单。也许我可以在单击表单后禁用表单上的“提交”按钮。听起来像是一个好的解决方案?我还能尝试什么?

1 个答案:

答案 0 :(得分:0)

您说数据仅一次到达数据库;具有从数据库中获取数据,发送电子邮件并使用一些新值更新数据库的过程,以跟踪已针对该数据发送了电子邮件

大多数db允许您自动执行类似的操作;您可以让您的数据库将email_status从未发送状态更新为处理状态,然后将数据返回发送给您-这样就无法运行两次。也许像这样:

UPDATE data 
SET email_status = 'sending'
OUTPUT inserted.subject, inserted.body
WHERE datecol = @date and email_status = 'notsent'

每天只运行一次。

您可能会发现有人双击提交按钮,在几乎同时完成的并行线程上发起两个请求,而且彼此之间的数据查看得还不够快,以至于他们不知道电子邮件已经发送了