0

さて、私の問題はこれです。フォームの送信時にメールを送信する簡単なvbscriptがあります。それが次のようなコードにある場合、電子メールを送信する場合(受信トレイで電子メールを受信します)、望ましくない2回:ページの読み込み時に1回、送信時に1回:

<% 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" />
4

1 に答える 1

1

フォームがGETではなくPOSTを実行していることを確認しますか?GETリクエストの場合は、代わりにrequest.querystring( "isSubmitted")が必要になります

また、チェックを関数に入れます。

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

次に、コードで__ if IsSubmit()then__を使用できます

于 2012-09-17T14:21:17.303 に答える