Avatar billede okkels Nybegynder
23. november 2003 - 17:36 Der 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"

strTo = "okkels@rutinen.dk"
strFrom  = "postmaster@rutinen.dk"
strSubject = "Rutinen Awards 2003"

'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"?

Al hjælp er velkommen.

/Okkels
Avatar billede thesurfer Nybegynder
23. november 2003 - 17:45 #1
..jeg tror at det ville være en god ide at vise koden til formularen, eller at skrive linket til siden..
Avatar billede okkels Nybegynder
23. november 2003 - 17:48 #2
Selve formularen er ikke specielt avanceret. Det hele foregår efter følgende princip:
--------------------------------------
<td style="border-top: solid 1px #969696;">
<input type="radio" name="2a" value="Kristian Bak Nielsen" style="border:0px;"> Kristian Bak Nielsen <br>
<input type="radio" name="2b" value="Berthel Askou" style="border:0px;"> Jens-Berthel Askou <br>
<input type="radio" name="2c" value="Spend Abazi" style="border:0px;"> Spend Abazi (sammen med Spend Hjelmen) <br>
<input type="radio" name="2d" value="Kasper Degn" style="border:0px;"> Kasper Degn <br>
<input type="radio" name="2e" value="Store Larsen" style="border:0px;"> Henrik "Store" Larsen <br>
</td>
--------------------------------------

Hvor det så er den afkrydsede option (2a, 2b, 2c, 2d eller 2e), som skal sendes i e-mailen sammen med de andre svar.

Er det mere forståeligt nu?
Avatar billede thesurfer Nybegynder
26. december 2003 - 03:11 #3
<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.

Jeg håber du kan bruge det.
Avatar billede thesurfer Nybegynder
26. december 2003 - 03:12 #4
Det ville jeg have lagt som et svar, så her er et svar.
Avatar billede okkels Nybegynder
02. januar 2004 - 00:24 #5
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"

strTo = "okkels@rutinen.dk"
strFrom  = "postmaster@rutinen.dk"
strSubject = "Rutinen Awards 2003"

'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...

Mange hilsner,
Kristoffer Okkels
Avatar billede thesurfer Nybegynder
02. januar 2004 - 00:37 #6
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".
Avatar billede okkels Nybegynder
02. januar 2004 - 00:45 #7
Jeg sidder og afprøver det lige nu, men får en fejl som du kan se på siden hvor jeg prøver det:
http://www.rutinen.dk/test/sporgeskema.asp

Har du en idé til hvad der er galt??
Avatar billede thesurfer Nybegynder
02. januar 2004 - 00:48 #8
Ja.. "next" skal på næste linie.. det må ikke stå bag "vbCrLf".
Avatar billede okkels Nybegynder
02. januar 2004 - 00:49 #9
Hmm... Så kommer den bare med en ny fejl:
-------
Microsoft VBScript compilation error '800a0400'

Expected statement

/test/sendmail.asp, line 19

next

------
Skal der en apostrof foran "next" eller noget??
Avatar billede thesurfer Nybegynder
02. januar 2004 - 00:52 #10
Hmm.. hvad har du ændret siden dit sidste indlæg med koden?
Avatar billede okkels Nybegynder
02. januar 2004 - 00:54 #11
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")

strTo = "okkels@rutinen.dk"
strFrom  = "postmaster@rutinen.dk"
strSubject = "Rutinen Awards 2003"

'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
%>
---------

Kan du finde fejlen???
Avatar billede thesurfer Nybegynder
02. januar 2004 - 00:55 #12
Der skal ikke apostrof foran "for":
' for each item in request.form
Avatar billede okkels Nybegynder
02. januar 2004 - 00:56 #13
Så får jeg følgende fejl:

Microsoft VBScript runtime error '800a01f4'

Variable is undefined: 'item'

/test/sendmail.asp, line 17
Avatar billede thesurfer Nybegynder
02. januar 2004 - 01:00 #14
dammit :)
dim svar, svarnavn, item ' vi skal også bruge disse variabler

Hvis du får fejlen "Variable is undefined: 'noget'", skal du bare definere/dimme variablen med: dim noget
Avatar billede thesurfer Nybegynder
02. januar 2004 - 01:03 #15
Det blev lidt klippet.. for at være sikker på at du ved hvordan: dim noget

Variabler skal defineres/dimmes FØR de tages i brug.
Dvs:
dim noget
noget = "hej"
osv..
Avatar billede okkels Nybegynder
02. januar 2004 - 01:05 #16
Hmm... Selvom jeg gør følgende, så virker det sgu ikke rigtigt:

-----------
svarnavn = "valg1" ' det der står før id-tallet
svar = "" ' bruges til at indholde svaret

svarnavn = "valg2" ' det der står før id-tallet
svar = "" ' bruges til at indholde svaret

dim svar, svarnavn ' vi skal også bruge disse variabler
--------------

I ovenstående har jeg vel defineret/dimmet variablerne før de bliver taget i brug eller hva??

Håber du kan hjælpe... Jeg blir' klogere hvis det er nogen trøst!! ;-)
Avatar billede thesurfer Nybegynder
02. januar 2004 - 01:15 #17
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

Og husk at dimme "item".
Avatar billede okkels Nybegynder
02. januar 2004 - 01:20 #18
Hehe, du må synes jeg er en tåbe... Hvilket jeg egentlig også er til det her skidt!

Hvad skal jeg dimme "item" til? Og hvad er det egentlig for et id-tal du snakker om jeg skal bruge i "svarnavn"?

Jeg har prøvet følgende men det virker heller ikke rigtigt...
----------------
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
item = "valg1"
Avatar billede thesurfer Nybegynder
02. januar 2004 - 01:28 #19
nejnejnej :) Nu går det helt galt :)

Det skal se sådan her ud:
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

-- Lad vær' med at lave om på det :) --

mht Id-nummeret.. Det er selv "gruppe"-nummeret..
<input type="radio" name="valg1" <-- 1-tallet
...
<input type="radio" name="valg2" <-- 2-tallet
...

som i:

<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>


dvs: De skal altid hedde "valg" efterfulgt af et id-nummer.. id-nummmerene skal være i rækkefølge, dvs "1, 2, 3" osv.. og ikke "1, 4, 9"..
Avatar billede okkels Nybegynder
02. januar 2004 - 01:31 #20
Hmm.... Men hvad skal jeg så stille op med item??? (arrhh - frustrationen breder sig! :-)

Skal jeg så skrive:

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
item = "1"

---------------

Og hvis jeg ikke skal rode ved "svarnavn" og "svar", hvordan / hvorfor skal jeg så bruge de forskellige ID-numre??

Help, please... ;)
Avatar billede thesurfer Nybegynder
02. januar 2004 - 01:35 #21
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.

Giver det mening?
Avatar billede thesurfer Nybegynder
02. januar 2004 - 01:36 #22
rettelse:
"De 5 valgmuligheder skal have samme navn" (navn og ikke værdi).
Avatar billede okkels Nybegynder
02. januar 2004 - 01:40 #23
Ahh, nu tror jeg der gik et lys op. Med følgende kode virker det:
---------------
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
---------------

Og dog er lykken endnu ikke gjort for nu brokker den sig i linie 22:

Microsoft VBScript runtime error '800a01f4'
Variable is undefined: 'strEmailMsg'
/test/sendmail.asp, line 22

Jeg synes da ellers jeg har defineret den variabel!?
Avatar billede thesurfer Nybegynder
02. januar 2004 - 01:41 #24
Du har ikke fået det her linier med:

'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
Avatar billede thesurfer Nybegynder
02. januar 2004 - 01:42 #25
De skal være der FØR de bruges.. så smid dem op under Option Explicit.
Avatar billede okkels Nybegynder
02. januar 2004 - 01:45 #26
Jeg er nu en lykkelig mand!!! :D

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??
Avatar billede thesurfer Nybegynder
02. januar 2004 - 01:46 #27
erstat:
response.write "Dine valg er registereret..."

med:
response.redirect "side.asp"

Det sender brugeren over til "side.asp".
Avatar billede okkels Nybegynder
02. januar 2004 - 01:47 #28
Kanon! Du får naturligvis pointene og en kæmpe bunke tak! Super fedt! ;-)
Avatar billede thesurfer Nybegynder
02. januar 2004 - 01:49 #29
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/
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester