2012-09-17 3 views
0

그래, 내 문제는 이것입니다. 양식을 제출할 때 전자 메일을 보내는 간단한 vbscript가 있습니다. 일단 페이지가로드 될 때, 그리고 한 번에 제출 :이 코드에있을 때 다음과 같이 이메일을 보내는 경우, 두 번 바람직하지 않은 (내받은 편지함에서 이메일을 수신) VBScript는 숨겨진 필드없이 두 번 보냅니다. 이메일을 보내려면 도움이 필요합니다.

<% Sub sendEmail(mailFrom, mailTo, mailSubject, mailMessage, mailServer, mailUsername, mailPassword) 
Set MyMail = CreateObject("cdo.message") 
MyMail.From = mailFrom 
MyMail.To = mailTo 
MyMail.Subject = mailSubject 
MyMail.HTMLBody = mailMessage 
MyMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 
MyMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = mailServer 
MyMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = mailUsername 
MyMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = mailPassword 
MyMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 
MyMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 
MyMail.Configuration.Fields.Update 
MyMail.Send 
Set MyMail = nothing 
End Sub 

Dim mailFrom, mailTo, mailSubject, mailMessage, mailServer, mailUsername, mailPassword 

mailFrom = "example" 
mailTo = "example" 
mailSubject = "Email test" 
mailMessage = "<html><body>example</body><html>" 
mailServer = "example" 
mailUsername = "example" 
mailPassword = "example" 

Call sendEmail(mailFrom, mailTo, mailSubject, mailMessage, mailServer, mailUsername, mailPassword)%> 

그래서 내가해야 할 일을했을 생각 이런 식으로 한 번만 보냅니다. 제출 단추 아래에 양식에 숨겨진 필드를 추가하고 코드를 편집하십시오. 유일한 문제는이 작업을 수행 할 때 양식이 올바르게 제출되고 오류가 발생하지 않는다는 것입니다. 그러나받은 편지함에는 이메일이 전송되지 않습니다. 어떤 도움 이라든지 대단히 감사 할 것입니다. 나는이 물건에 최선 아니에요, 난 여전히! : 배우고

<% if request.form("isSubmitted") = "yes" then 
Sub sendEmail(mailFrom, mailTo, mailSubject, mailMessage, mailServer, mailUsername, mailPassword) 
Set MyMail = CreateObject("cdo.message") 
MyMail.From = mailFrom 
MyMail.To = mailTo 
MyMail.Subject = mailSubject 
MyMail.HTMLBody = mailMessage 
MyMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 
MyMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = mailServer 
MyMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = mailUsername 
MyMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = mailPassword 
MyMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 
MyMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 
MyMail.Configuration.Fields.Update 
MyMail.Send 
Set MyMail = nothing 
End Sub 

Dim mailFrom, mailTo, mailSubject, mailMessage, mailServer, mailUsername, mailPassword 

mailFrom = "example" 
mailTo = "example" 
mailSubject = "Email test" 
mailMessage = "<html><body>example</body><html>" 
mailServer = "example" 
mailUsername = "example" 
mailPassword = "example" 

Call sendEmail(mailFrom, mailTo, mailSubject, mailMessage, mailServer, mailUsername, mailPassword) 
end if %> 

편집 # 1 : 이것은 내 숨겨진 필드합니다 (아무 소용이 버튼을 제출 한 후 나는 또한 숨겨진 필드를 넣어 것입니다 .)

<input type="hidden" name="isSubmitted" id="isSubmitted" value="yes" /> 
<input type="submit" name="btnSubmit" id="btnSubmit" value="Submit" class="submit" /> 
+0

당신이 그것의 실행을 보장하기 위해 하위 내에서 ("확인") Response.Write에 있나요? –

+2

'isSubmitted'가 제대로 설정되었는지 확인할 수 있도록 Pls가 HTML 코드를 추가합니다. 또한 hiddenField 대신 ** Request.ServerVariables ("REQUEST_METHOD") = "POST"**를 확인할 수 있습니다. ([SO] (http://stackoverflow.com/questions/2128539/asp-check-request-method) –

+0

좋아요, 제출 한 필드와 숨겨진 필드를 추가했지만 더 필요한 경우 알려주세요. 또한 나는 그것을 너무 많이 시도 할 것이다. 도움에 감사드립니다. – Control

답변

1

양식이 POST가 아닌 GET을 수행하고 있습니까? GET 요청 인 경우 request.querystring ("isSubmitted")이 필요합니다.

수표를 함수에 넣습니다.

Function IsSubmit() 
    'IsSubmit= (request.form("isSubmitted") = "yes") 'Edited for more generic solution 
    IsSubmit = (Request.ServerVariables("REQUEST_METHOD") = "POST") 
End Function 

그럼 당신은 __ 사용할 수있는 경우 IsSubmit() __ 코드에서

+0

아니요, 내 양식은 method = "post"입니다. 내가 추천 한 코드를 추가하려고했지만 여전히 작동하지 않는 것 같습니다. (당신이 if 앞에 놓인 것을 추가하고 if를 % if isSubmit() then %>로 변경했습니다. – Control

+0

안녕하세요, Kruce, 코드에 아무 것도 보이지 않습니다. sendEmail 프로 시저를 외부에 둡니다. 귀하의 if 진술. Franz Pilgerstorfer가 제안한보다 일반적인 솔루션을 사용하기 위해 필자의 기능을 업데이트했습니다. 실제로 우리가 생산 환경에서 일반적으로 사용하는 것입니다 ... – AardVark71

+0

오, 실제로 작동했습니다! request.servervariables ("Request_method") = "게시"! Pilgerstorfer Franz와 AardVark71에 감사드립니다! – Control

관련 문제