Jag har precis blivit tvungen att gå över från Perl till Asp då min chef tyckte att detta var det enda rätta. (jag är nog tvungen att hålla med honom)
Men när jag ska skicka mail med Jmail hamnar alla formulär-fält i fel ordning.
Jag vet att man kan bestämma ordningen mha en lista men jag hade tänkt att slippa detta... ;)
Finns det inget sätt som gör att man helt enkelt skriver in att fälten ska hamna i samma ordning som de står i på html-sidan?
Eller kanske att det skulle gå att bara bestämma ordningen genom att skriva 1, 2, 3 osv i varje <input>-tagg.
trodde de kom i samma ordning, de brukar väl göra det??? :o :q
Annars så får du väl göra det manuellt, dvs stoppa in dem i mailet i den ordningen du vill ha det. Med en select case sats eller genom att veta vad alla heter... :e
------------------
If you're talking like a bitch, I'm gonna slap you like a bitch!
Ja, här kommer iaf formuläret och sen mailgeneratorn (sendmail.asp).
Själva formuläret då (lite kladdigt):
<form METHOD="POST"
ACTION="sendmail.asp">
<br><b>Klicka i önskat alternativ nedan </b>
<p><input TYPE="checkbox" NAME="GBG_24_till_25_apr" VALUE="CHECKED">Jag
önskar gå den öppna kursen i Göteborg 24 - 25 april.
<br><input TYPE="checkbox" NAME="GBG_13_till_14_nov" VALUE="CHECKED">Jag
önskar gå den öppna kursen i Göteborg 13 - 14 november.
<p><input TYPE="checkbox" NAME="Jag_vill_ga_kursen_vid_ett_annat_tillfalle_kontakta_mig" VALUE="CHECKED">Jag
önskar gå kursen vid en annan tidpunkt eller plats, kontakta
mig.
<br><input TYPE="checkbox" NAME="Onskar_internkurs_vill_ha_separat_offert" VALUE="CHECKED">Vi
önskar en internkurs för vår personal enligt separat offert,
kontakta oss.
<br><input TYPE="checkbox" NAME="Onskar_info_om_lastsakr_for_sjobefal_kontakta_oss" VALUE="CHECKED">Vi
önskar information om lastsäkringskurser för sjöfolk
och stuveriarbetare, <font color="#FFFFFF">___</font>kontakta
oss.
<br> </td>
</tr>
</table>
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="610" >
<tr ALIGN=LEFT VALIGN=TOP>
<td WIDTH="110"></td>
<td WIDTH="500"><b>Ditt namn:</b>
<br><input TYPE="text" NAME="Namn">
<br><b>Företag:</b>
<br><input TYPE="text" NAME="Foretag">
<br><b>Adress:</b>
<br><input TYPE="text" NAME="Adress">
<br><b>Postnummer och ort:</b>
<br><input TYPE="text" NAME="Postnrort">
<br><b>Telefon:</b>
<br><input TYPE="text" NAME="Telefon">
<br><b>Telefax:</b>
<br><input TYPE="text" NAME="Telefax">
<br><b>E-mail:</b>
<br><input TYPE="text" NAME="Email">
<br><b>Kommentar:</b>
<br><textarea NAME="Kommentar" ROWS=10 COLS=40></textarea>
<br><b>Datum:</b>
<br><input TYPE="text" NAME="Datum">
<br><input TYPE="submit" VALUE=" Skicka"><input TYPE="reset" VALUE="Radera!"></form>
Sen kommer själva mailgeneratorn:
<%@LANGUAGE = VBSCRIPT%> <html>
<body>
<%
' Create the JMail message Object
set msg = Server.CreateOBject( "JMail.Message" )
' Set logging to true to ease any potential debugging
' And set silent to true as we wish to handle our errors ourself
msg.Logging = true
msg.silent = true
' Most mailservers require a valid email address
' for the sender
msg.from = Request.Form( "Email" )
msg.FromName = Request.Form( "Namn" )
' Note that as addRecipient is method and not
' a property, we do not use an equals ( = ) sign
msg.AddRecipient "gustav@mariterm.se", "Gustav Efraimsson"
' The subject of the message
msg.Subject = "Mail from the web"
'add every form element and its value to the email
FOR EACH el IN Request.Form
msg.appendtext( el & ": " & Request.form(el) & vbcrlf )
NEXT
' Now send the message, using the indicated mailserver
if not msg.Send("mail.mariterm.se" ) then
Response.write "<pre>" & msg.log & "</pre>"
else
Response.write "Ditt mail har skickats!"
end if
' And we're done! the message has been sent.
%>
</body>
</html>
Som sagt...jag är ganska ny på det här med ASP. ;)
Det blev konstigt...det mailet som skickades innehöll typ 10 kopior av mailet. Plus att ett fält hamnade fel i alla fall... :(
Hur gör man för att automatiskt skicka ett mail till avsändaren som bekräftar att hans mail har blivit skickat?
Hur gör man för att ha kolla så att vissa fält är ifyllda och om dom är det så skickas man till en Tack-sida och om dom inte är det så skickas man till en Oops-sida! :e
<%@LANGUAGE = VBSCRIPT%> <html>
<body>
<%
' Create the JMail message Object
set msg = Server.CreateOBject( "JMail.Message" )
' Set logging to true to ease any potential debugging
' And set silent to true as we wish to handle our errors ourself
msg.Logging = true
msg.silent = true
' Most mailservers require a valid email address
' for the sender
msg.from = Request.Form( "Email" )
msg.FromName = Request.Form( "Namn" )
' Note that as addRecipient is method and not
' a property, we do not use an equals ( = ) sign
msg.AddRecipient "gustav@mariterm.se", "Gustav Efraimsson"
' The subject of the message
msg.Subject = Request.Form( "Subject" )
'add every form element and its value to the email
FOR EACH el IN Request.Form
msg.appendtext( el & ": " & Request.form(el) & vbcrlf )
arrList=split(request.form("fieldlist"),",")
for each strField in arrList
msg.appendtext(strField & ": " & Request.form(strField)& vbcrlf )
next
' Now send the message, using the indicated mailserver
if not msg.Send("mail.mariterm.se" ) then
Response.write "<pre>" & msg.log & "</pre>"
else
Response.write "Ditt mail har skickats!"
end if
' And we're done! the message has been sent.
%>
</body>
</html>
FOR EACH el IN Request.Form
msg.appendtext( el & ": " & Request.form(el) & vbcrlf )
arrList=split(request.form("fieldlist"),",")
for each strField in arrList
msg.appendtext(strField & ": " & Request.form(strField)& vbcrlf )
next
Du har två for-loopar, varav bara den ena avslutas, och dessutom skulle detta innebära att fälten kommer med två gånger. Du behöver bara min loop.
Det gör du enklast antingen genom en funktion som kollar alla fomulär om de är ifyllda eller inte, alternativt en funktion där du anger de fält som måste vara ifyllda och sedan kollar om de är tomma eller inte.
Sedan kollar du bara resultatet tav loopen, och handlar efter det.