23. november 2003 - 17:36Der er
28 kommentarer og 1 løsning
Sende form-resultater med CDONTS
Hej,
På min side har jeg en form med en række spørgsmål, hvor resultaterne skal sendes til min e-mail. Det skal foregå vha. CDONTS, da det er det eneste b-one.net understøtter.
Baseret på den følgende side [http://developers.sun.com/asp/howto/chilimail.html] har jeg langt om længe har jeg fundet frem til, at selve CDONTS-processen skal se ud som følger: ------------------------------------------- <%@LANGUAGE="VBSCRIPT" %>
<% Option Explicit %>
'Declare your variables Dim MyEmail 'Email Server Object Variable Dim strEmailMsg 'Email Message Body Dim strTo 'Email Recipient's Address Dim strFrom 'Email From Address Dim strSubject 'Email Subject Line
'Create the mail object Set MyEmail = Server.CreateObject("CDONTS.NewMail")
'Define your variables strEmailMsg = "I noticed you visted my website. I want to send you this email as a thank-you." & VBCRLF strEmailMsg = strEmailMsg & "Best Regards," & VBCRLF strEmailMsg = strEmailMsg & "Your Friend"
'Use the mail object methods and your ASP variables to generate and send e-mail. MyEmail.Subject = strSubject MyEmail.Host = "smtp1.b-one.net" MyEmail.Body = strEmailMsg MyEmail.From = strFrom MyEmail.To = strTo MyEmail.Send
'It is always a good idea to destroy your server objects once you are done with them, to preserve resources. Set MyEmail = Nothing -------------------------------------------
Nu skal jeg så bare ha' fundet ud af hvordan jeg definerer, at det er resultatet af min form, som jeg skal ha' sendt til min e-mail. Bemærk venligst, at det ikke blot er en normal formular-e-mail, men en hel række spørgsmål - hver med ca. 4 radio-options.
Kan det passe man skal ind og definere at alle radio-buttons skal inkluderes i "strEmailMsg"?
<form action="valg.asp" method="post"> Spørgsmål 1: Hvordan går det? <br> <input type="radio" name="valg1" value="Kristian Bak Nielsen"> Kristian Bak Nielsen <br> <input type="radio" name="valg1" value="Berthel Askou"> Jens-Berthel Askou <br> <input type="radio" name="valg1" value="Spend Abazi"> Spend Abazi (sammen med Spend Hjelmen) <br> <input type="radio" name="valg1" value="Kasper Degn"> Kasper Degn <br> <input type="radio" name="valg1" value="Store Larsen"> Henrik "Store" Larsen <br> <br>
Spørgsmål 2: Hvad synes du? <br> <input type="radio" name="valg2" value="Kristian Bak Nielsen"> Kristian Bak Nielsen <br> <input type="radio" name="valg2" value="Berthel Askou"> Jens-Berthel Askou <br> <input type="radio" name="valg2" value="Spend Abazi"> Spend Abazi (sammen med Spend Hjelmen) <br> <input type="radio" name="valg2" value="Kasper Degn"> Kasper Degn <br> <input type="radio" name="valg2" value="Store Larsen"> Henrik "Store" Larsen <br> <br>
Spørgsmål 3: Hvem er du? <br> <input type="radio" name="valg3" value="Kristian Bak Nielsen"> Kristian Bak Nielsen <br> <input type="radio" name="valg3" value="Berthel Askou"> Jens-Berthel Askou <br> <input type="radio" name="valg3" value="Spend Abazi"> Spend Abazi (sammen med Spend Hjelmen) <br> <input type="radio" name="valg3" value="Kasper Degn"> Kasper Degn <br> <input type="radio" name="valg3" value="Store Larsen"> Henrik "Store" Larsen <br>
<br> <input type="submit" value="Send"> </form>
<% if request.servervariables("request_method") = "POST" then ' brugeren har klikket "Send".......
dim svar, svarnavn ' vi skal også bruge disse variabler
svarnavn = "valg" ' det der står før id-tallet svar = "" ' bruges til at indholde svaret
' Løb igennem alle svarene, og tag id-tallet der står efter "valg", ' og indsæt svaret efter det.
for each item in request.form svar = svar & "Svar " & mid(item, len(svarnavn) + 1) & ": " & request.form(item) & vbCrLf next
strEmailMsg = "" ' teksten i din mail strEmailMsg = strEmailMsg & "Hej. Her er svarene fra spørgeskeamet:" & vbCrLf & ("<br>" & replace(svar, vbCrLf, vbCrLf & "<br>"))
' resten af din mail kode indsætter du her ' og sender mailen
response.write strEmailMsg end if %>
Navne på elementer må ikke starte med et tal, derfor valgte jeg "valg" til at stå foran id-tallet. Radioknapperne er grupperet, og derfor skal de have det samme navn, som i mit eksempel. Ellers vil du kunne vælge dem alle sammen, i stedet for at den skifter til den, du sidst har valgt. Ved at kalde dem alle "valgX", hvor X er et id-tal, kan man nøjes med en lille loop på 3 liniers kode.
Du skal ændre følgende: - action="valg.asp" (indsæt navnet på siden, der sender mailen, her i stedet for "valg.asp") - name="valg1" (og de andre.. husk at rette værdien af "svarnavn"..) - svarnavn = "valg" (indholdet af svarnavn skal være radioknappernes navn, minus id-tallet)
Jeg har inkluderet noget test-kode: ("<br>" & replace(svar, vbCrLf, vbCrLf & "<br>"))
Det er bare så du kan se, hvordan det kommer til at se ud i mailen. Efter test er overstået, erstatter du hele linien med variablen: svar Og linien "response.write strEmailMsg" slettes.
Jeg har fjernet style="border:0px;", da det ikke har nogen betydning, i dette sammenhæng.
Hej og undskyld den lange svartid fra min side... Men det er jo ferie- og juletid, du ved... ;-)
Jeg er ikke helt sikker på hvordan jeg skal bruge den kode du har givet. Selve formularen er vel i én fil, som vi fx kan kalde "sporgeskema.asp" og som kunne se således ud: ------------ <form action="sendmail.asp" method="post"> Spørgsmål 1: Hvordan går det? <br> <input type="radio" name="valg1" value="Kristian Bak Nielsen"> Kristian Bak Nielsen <br> <input type="radio" name="valg1" value="Berthel Askou"> Jens-Berthel Askou <br> <input type="radio" name="valg1" value="Spend Abazi"> Spend Abazi (sammen med Spend Hjelmen) <br> <input type="radio" name="valg1" value="Kasper Degn"> Kasper Degn <br> <input type="radio" name="valg1" value="Store Larsen"> Henrik "Store" Larsen <br> <br>
Spørgsmål 2: Hvad synes du? <br> <input type="radio" name="valg2" value="Kristian Bak Nielsen"> Kristian Bak Nielsen <br> <input type="radio" name="valg2" value="Berthel Askou"> Jens-Berthel Askou <br> <input type="radio" name="valg2" value="Spend Abazi"> Spend Abazi (sammen med Spend Hjelmen) <br> <input type="radio" name="valg2" value="Kasper Degn"> Kasper Degn <br> <input type="radio" name="valg2" value="Store Larsen"> Henrik "Store" Larsen <br> <input type="submit" value="Send"> </form> -----------------
Når resultatet af formen skal sendes, skal det gøres i en anden fil, som fx hedder "sendmail.asp" og som kunne se ud som følger:
----------------- <%@LANGUAGE="VBSCRIPT" %>
<% Option Explicit %>
<% if request.servervariables("request_method") = "POST" then ' brugeren har klikket "Send".......
dim svar, svarnavn ' vi skal også bruge disse variabler
svarnavn = "valg" ' det der står før id-tallet svar = "" ' bruges til at indholde svaret
' Løb igennem alle svarene, og tag id-tallet der står efter "valg", ' og indsæt svaret efter det.
for each item in request.form svar = svar & "Svar " & mid(item, len(svarnavn) + 1) & ": " & request.form(item) & vbCrLf next
strEmailMsg = "" ' teksten i din mail strEmailMsg = strEmailMsg & "Hej. Her er svarene fra spørgeskeamet:" & vbCrLf & ("<br>" & replace(svar, vbCrLf, vbCrLf & "<br>"))
'Create the mail object Set MyEmail = Server.CreateObject("CDONTS.NewMail")
'Define your variables strEmailMsg = "I noticed you visted my website. I want to send you this email as a thank-you." & VBCRLF strEmailMsg = strEmailMsg & "Best Regards," & VBCRLF strEmailMsg = strEmailMsg & "Your Friend"
'Use the mail object methods and your ASP variables to generate and send e-mail. MyEmail.Subject = strSubject MyEmail.Host = "smtp1.b-one.net" MyEmail.Body = strEmailMsg MyEmail.From = strFrom MyEmail.To = strTo MyEmail.Send
'It is always a good idea to destroy your server objects once you are done with them, to preserve resources. Set MyEmail = Nothing
response.write strEmailMsg end if %>
--------------------
Er det noget i den stil der skal til før det fungerer??
Takker for din tålmodighed og håber på din fortsatte hjælp...
Det ser rigtigt ud.. har du prøvet det? Det ville nok være en god ide, at erstatte det sidste response.write strEmailMsg, med f.eks.: response.write "Dine valg er registreret".
Ikke noget væsentligt er jeg ret sikker på. Men for god ordens skyld får du da lige hele koden til sendmail.asp her:
----------------- <%@LANGUAGE="VBSCRIPT" %>
<% Option Explicit %>
<% if request.servervariables("request_method") = "POST" then ' brugeren har klikket "Send".......
dim svar, svarnavn ' vi skal også bruge disse variabler
svarnavn = "valg" ' det der står før id-tallet svar = "" ' bruges til at indholde svaret
' Løb igennem alle svarene, og tag id-tallet der står efter "valg", ' og indsæt svaret efter det.
' for each item in request.form svar = svar & "Svar " & mid(item, len(svarnavn) + 1) & ": " & request.form(item) & vbCrLf next
strEmailMsg = "" ' teksten i din mail strEmailMsg = strEmailMsg & "Hej. Her er svarene fra spørgeskemaet:" & vbCrLf & ("<br>" & replace(svar, vbCrLf, vbCrLf & "<br>"))
'Create the mail object Set MyEmail = Server.CreateObject("CDONTS.NewMail")
'Use the mail object methods and your ASP variables to generate and send e-mail. MyEmail.Subject = strSubject MyEmail.Host = "smtp1.b-one.net" MyEmail.Body = strEmailMsg MyEmail.From = strFrom MyEmail.To = strTo MyEmail.Send
'It is always a good idea to destroy your server objects once you are done with them, to preserve resources. Set MyEmail = Nothing
response.write "Dine valg er registereret..." end if %> ---------
Nej, det er omvendt :) Dim skal komme først.. Og svarnavn skal kun være "valg", og der skal kun være 1 "svarnavn = ".
Dvs: dim svar, svarnavn, item ' vi skal også bruge disse variabler svarnavn = "valg" ' det der står før id-tallet svar = "" ' bruges til at indholde svaret
Du skal overhovedet ikke bruge "item =...". Der skal kun stå:
dim svar, svarnavn, item ' vi skal også bruge disse variabler
svarnavn = "valg" ' det der står før id-tallet svar = "" ' bruges til at indholde svaret
Hvorfor sletter du hele tiden "item" fra linien?: dim svar, svarnavn, item ' vi skal også bruge disse variabler
Du skal bruge id-numre, fordi du har nogle grupper af radiobuttons. De 5 valgmulighede skal have samme værdi, så man kan vælge imellem dem. Hvis de har forskellige navn, kan man vælge alle 5 punkter. De 5 andre radionbuttons, i den anden gruppe, skal have et anden navn end gruppe 1. MEN: De 5 radiobuttons skal have samme navn, indbyrdes i gruppen.
'Declare your variables Dim MyEmail 'Email Server Object Variable Dim strEmailMsg 'Email Message Body Dim strTo 'Email Recipient's Address Dim strFrom 'Email From Address Dim strSubject 'Email Subject Line
Mange, mange tak for din hjælp! Du har en imponerende tålmodighed! ;)
En sidste lille ting: hvis jeg gerne vil have brugeren sendt videre til en anden side i stedet for blot at lade ham vide at valgene er registreret, hvad gør jeg da??
Hehe.. der gik lidt over en måned fra dit første indlæg og til mit svar :) Jeg skulle jo ha' lidt "tænke"-tid :) OK, OK.. jeg havde glemt spm'et.. sker engang imellem :)
Jeg siger tak for points, og held og lykke i fremtiden :)
Du er mere end velkommen til at tage et smut forbi html.dk, hvor de har gode tutorials: http://html.dk/tutorials/asp/
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.