由于某种原因,.Net VB电子邮件表单发送两次

时间:2016-10-12 11:33:09

标签: asp.net vb.net forms email

我的电子邮件联系表(由于某种未知原因)发送两次,有时甚至三次,尽管这种情况很少见。

这是我的VB:

<% @Import Namespace="System.Web.Mail" %>

<script language="vb" runat="server">

Sub btnSendFeedback_Click(sender as Object, e as EventArgs)

 Dim objMM as New MailMessage()
 objMM.To = "info@emailaddress.com"
 objMM.From = txtEmail.Text
'objMM.Cc = "someone@someaddress.com"
'objMM.Bcc = "someone@someaddress.com"
 objMM.BodyFormat = MailFormat.Text
 objMM.Priority = MailPriority.Normal
 objMM.Subject = "Scotts Holiday Village"
 objMM.Body = "Hello. At " + DateTime.Now + " an initial enquiry " & _
           "was made " & _
            "by a: " & txtTitle.Text & " " & txtFName.Text & " " & txtLName.Text & "." & vbCrLf & vbCrLf & _               
         ""& txtAdOne.Text & vbCrLf &  _
           txtAdTwo.Text & vbCrLf &  _
           txtAdThree.Text & vbCrLf &  _
          ""& txtCity.Text & vbCrLf &  _
          ""& txtPostCode.Text & vbCrLf & vbCrLf & _
           "Phone number: " & vbCrLf & txtPhone.Text & vbCrLf & vbCrLf & _
           "Email address: " & vbCrLf & txtEmail.Text & vbCrLf & vbCrLf & _
           "When are you looking to buy?: " & vbCrLf & txtWhenBuy.Text & vbCrLf & vbCrLf & _
           "Estimated budget: "  & vbCrLf & txtEstBudget.Text & vbCrLf & vbCrLf & _
           "What's given you the idea of buying?: " & vbCrLf &txtIdea.Text & vbCrLf & vbCrLf & _
           "Message: " & vbCrLf &txtMsg.Text & vbCrLf 

   SmtpMail.SmtpServer = "smtp.1and1.com"
   SmtpMail.Send(objMM)
   panelSendEmail.Visible = false
   panelMailSent.Visible = true
 End Sub

 </script>

panelMailSent重定向到感谢,确认页面可能与它有关,我不确定:

<asp:panel id="panelMailSent" runat="server" Visible="False">

<% Response.Redirect("/thankyou/message-sent.aspx") %>

</asp:panel>

提交按钮:

<asp:Button runat="server" ID="btnSendFeedback" Text="Send my form"
              OnClick="btnSendFeedback_Click" />

表单方法:

<form method="post" id="genericForm" action="default.aspx" name="installer" onsubmit="showHide(); return false;">

非常感谢。

1 个答案:

答案 0 :(得分:0)

在页面底部(上面有提交按钮),以下javascript可能会有所帮助。这样可以通过禁用控件来防止双击:

<script type="text/javascript" language="javascript">
    Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(DoubleClickHandler);
    function DoubleClickHandler(sender, args) 
    { 
        var c = args.get_postBackElement(); 
        c.disabled = true; 
    }
</script>

还有很多其他方法;检查服务器端是最安全的,但在asp.net中实现起来更复杂。有时使用的另一种方法是不阻止双重提交,而是存储这些电子邮件请求(例如,在数据库中),然后任务将每隔5分钟(例如)发送所有电子邮件,从而删除重复项。< / p>