2014-10-29 2 views
1

4 개의 필드가 포함 된 전자 메일을 보내는 양식이 있습니다. 필드 중 하나가 데이터베이스에 대한 사용자 정의 유효성 검사기에 의해 유효성이 검사되고 값이 발견되면 전자 메일을 보내야합니다. 발견되지 않으면 이메일이 취소되어야하며 오류 메시지가 있어야합니다. 유효성 검사와 상관없이 이메일 전송을 제외한 모든 작업이 작동합니다. 이메일을 보내지 못하게하려면 어떻게해야합니까?전자 메일 취소 asp.net 사용자 지정 유효성 검사기와 함께 보내기

Imports System.Net.Mail 
Imports System.Data.OleDb 
Imports System.Data.SqlClient 

Partial Class inforequest 
Inherits System.Web.UI.Page 

Protected Sub btnSend_Click(ByVal sender As Object, ByVal e As EventArgs) 



    Dim mm As New MailMessage("[email protected]", "[email protected]") 
    mm.Subject = txtSubject.Text 
    mm.Body = "Name: " & txtName.Text & "<br /><br />Email: " & txtEmail.Text & "<br />" &      txtBody.Text & "<br /> Agent Code:" & AgentCode.Text 


    mm.IsBodyHtml = True 
    Dim smtp As New SmtpClient() 
    smtp.Host = "mailserver" 
    smtp.EnableSsl = False 

    Dim NetworkCred As New System.Net.NetworkCredential() 
    smtp.UseDefaultCredentials = False 


    NetworkCred.UserName = "username" 
    NetworkCred.Password = "password" 
    smtp.EnableSsl = False 

    smtp.Credentials = NetworkCred 
    smtp.Port = 587 
    smtp.Send(mm) 
    lblMessage.Text = "Email Sent SucessFully." 
End Sub 






Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load 


    Dim dbconn As String 
    Dim qstring = Request.QueryString("ID") 
    Dim addressDR As System.Data.SqlClient.SqlDataReader 

    Dim sqlcommand As String = "SELECT * FROM listings WHERE [email protected]" 
    dbconn = ConfigurationManager.ConnectionStrings("houses").ToString 

    Dim connection As New System.Data.SqlClient.SqlConnection(dbconn) 
    connection.Open() 
    Dim addresscmd As New System.Data.SqlClient.SqlCommand(sqlcommand, connection) 
    addresscmd.Parameters.AddWithValue("@qstring", qstring) 

    addressDR = addresscmd.ExecuteReader() 





    If addressDR.HasRows Then 
     addressDR.Read() 
     Me.txtBody.Text = "I would like to request a showing of the home located at: " & addressDR("address") & " MLS#: " & addressDR("mlsnum") 
     addressDR.Close() 


    End If 

    connection.Close() 





End Sub 




Protected Sub CodeValidate_ServerValidate(ByVal source As Object, ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs) Handles CodeValidate.ServerValidate 

    Dim AgentCode = Request.Form("AgentCode") 
    Dim sql As String = "SELECT agentcode FROM Codes WHERE agentcode = @AgentCode" 

    Using conn As New SqlConnection(ConfigurationManager.ConnectionStrings("Codes").ConnectionString) 
     Using cmd As New SqlCommand(sql, conn) 
      cmd.Parameters.AddWithValue("@AgentCode", AgentCode) 

      conn.Open() 
      Using rdr As SqlDataReader = cmd.ExecuteReader() 
       If (rdr.Read()) Then 
        'MsgBox("reader reading") 
        'If AgentCode = rdr("agentcode").ToString() Then 
        args.IsValid = True 

        'MsgBox("valid!") 
       Else 
        args.IsValid = False 

        'MsgBox("not valid") 
       End If 

      End Using 
      conn.Close() 

     End Using 

    End Using 
End Sub 




End Class 
+0

신경 끄시을 Page.Validate()를 호출도 확인해야합니다. 저는 부울을 선언하고 유효성 검사기에서 true로 설정 한 다음 true로 설정된 경우에만 보냅니다. 나는 지나치게 생각했다. – adgoodso23

답변

2

당신은 내가 그것을 가지고, Page.IsValid

관련 문제