14. oktober 2003 - 23:42Der er
6 kommentarer og 1 løsning
JMail og "tvungen" udfyldning af felter
Hej, har problem med at få nedenstående JMail form til at virke som jeg gerne vil have den til. Er der en der kan finde de_vise_sten så brugerne "tvinges" til at udfylde alle felter inden mailen kan afsendes? Vedhæfter lige koderne. På forhånd tak. --- default.asp ----
' Get the form data name = Request.Form("name") senderEmail = Request.Form("email") subject = Request.Form("subject") recipient = "mail@DOMÆNE.dk" body = Request.Form("body") & vbCrLf & " "& vbCrLf & "Navn: " & request.form("name") & vbCrLf & " "& vbCrLf & "Telefon: " & request.form("telefon") & vbCrLf & " "& vbCrLf & "E-mail: " & request.form("email") & vbCrLf
' 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
' Enter the sender data msg.FromName = name msg.From = senderEmail
' Note that as addRecipient is method and not ' a property, we do not use an equals ( = ) sign msg.AddRecipient recipient
' The subject of the message msg.Subject = subject
' And the body msg.body = body
' Now send the message, using the indicated mailserver if not msg.Send("mail.DOMÆNE.dk" ) then Response.write "<h2>UPS!</h2><h3>Du fik vist ikke udfyldt alle felterne - <a href='java script:history.back(-1)'>KLIK HER</a> og undersøg hvor fejlen kan ligge..." ' Response.write "<pre>" & msg.log & "</pre>" else Response.Redirect("tak.asp") end if
Hej thesurfer. Jeg er ingen haj til asp, har dog prøvet mig frem med din koder, desværre uden held. I den "originale" kode sker der det at hvis man ikke udfylder noget og trykker på send, så virker redirect fint (tak.asp - dog uden jeg modtager en mail) Hvis man f.eks skriver cc i alle felter, da går den videre til: Response.write "<h2>UPS!</h2><h3>Du fik vist ikke udfyldt alle felterne, slutligen hvis jeg så ændrer cc i email feltet til et gyldig emailadresse, da modtager jeg mailen. Hilsen Carsten
Jeg har startet om, og lavet alt det du skal bruge i 1 fil.. du skal selvfølge fil også bruge din "tak.asp"..
jeg har prøvet script og det virker.. dog har jeg ikke prøvet med din JMail script indbygget.. dvs, er der fejl, så er det sikkert mail-scriptet der er noget galt med..
jeg har brugt Option Explicit, så du *SKAL* definere de variabler der bliver bryut.. hvis du ikke gør det, vil du få en fejlmelding.. man bruger det så man undgår stavefejl..
jeg har skrevet kommentarer til de linierne så du kan finde ud af hvordan de virker..
- håber du kan bruge det.
/theSurfer.
<% option explicit ' tving programmøren til at definere variablerne for at undgå stavefejl o.lign.. response.buffer = true ' hele siden dannes før den sendes til brugeren
%> <html> <head> <style type="text/css"> /* ved at bruge css, undgår du at skulle skriv <font...> hver gang */ body, td { font-family: tahoma; font-size: 10px; }
</style> </head> <body> <% if lcase(request.form("mode")) = "send" then ' hvis brugeren har trykker på Submit, udføres denne kode: dim OK, item OK = True ' vores CheckPoint
' vi looper igennem alle felterne for at se om der er nogen der er tomme: for each item in request.form
' feltet "mode" der indholder "send" skal ikke tælles med: if lcase(request.form(item)) <> "send" then ' hvis det nuværende felt er tomt, sættes OK til False / falsk if request.form(item) = "" then OK = false end if next ' loop videre til den næste
' hvis der står noget i alle felterne, udføres denne kode: if OK = true then
''''''''''''' din mail kode starter her '''''''''''''
dim name, senderEmail, subject, recipient, body, msg
' Get the form data name = Request.Form("name") senderEmail = Request.Form("email") subject = Request.Form("subject") recipient = "mail@DOMÆNE.dk" body = Request.Form("body") & vbCrLf & " "& vbCrLf & "Navn: " & request.form("name") & vbCrLf & " "& vbCrLf & "Telefon: " & request.form("telefon") & vbCrLf & " "& vbCrLf & "E-mail: " & request.form("email") & vbCrLf
' 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
' Enter the sender data msg.FromName = name msg.From = senderEmail
' Note that as addRecipient is method and not ' a property, we do not use an equals ( = ) sign msg.AddRecipient recipient
' The subject of the message msg.Subject = subject
' And the body msg.body = body
' Now send the message, using the indicated mailserver if not msg.Send("mail.DOMÆNE.dk" ) then Response.write "<h2>UPS!</h2><h3>Du fik vist ikke udfyldt alle felterne - <a href='java script:history.back(-1)'>KLIK HER</a> og undersøg hvor fejlen kan ligge..." ' Response.write "<pre>" & msg.log & "</pre>" else Response.Redirect("tak.asp") end if
' And we're done! the message has been sent.
''''''''''''' din mail kode slutter her '''''''''''''
else ' en eller flere felter var tomme: ' definere vores variabler: dim StyleST ' StyleStarT, starter et font-tag der gør farven rød dim StyleSP ' StyleStoP, slutter font-tagget så det ikke er hele teksten der bliver rød dim strFejlTegn ' jeg har brugt en "*", ses af brugereren ved manglede indtastning dim strVisFejl ' kombination af FontStart + FejlTegn + FontSlut dim strVisInfo ' Fortæller brugeren hvad "*" betyder dim strName, strEmail, strTelefon, strSubject, strBody ' variabler til indhold af felter dim strFejlName, strFejlEmail, strFejlTelefon, strFejlSubject, strFejlBody ' sætter "*" ved manglende felter
StyleST = "<font color='#FF0000'>" ' her justere du din style/layout strFejlTegn = "*" ' det tegn brugeren skal se ud for manglende felter StyleSP = "</font>" strVisFejl = StyleST & strFejlTegn & StyleSP strVisInfo = StyleST & "* Skal udfyldes" & StyleSP
strName = request.form("name") ' henter det der står i feltet "name" og putter det i "strName" strEmail = request.form("email") ' det samme med andre værdier.. strTelefon = request.form("telefon") strSubject = request.form("subject") strBody = request.form("body")
if request.form("name") = "" then strFejlName = strVisFejl ' hvis feltet er tomt, sæt en "*".. if request.form("email") = "" then strFejlEmail = strVisFejl if request.form("telefon") = "" then strFejlTelefon = strVisFejl if request.form("subject") = "" then strFejlSubject = strVisFejl if request.form("body") = "" then strFejlBody = strVisFejl end if end if %>
<center> <form name="FormMail" method="post" action="SendMail.asp" onSubmit="document.FormMail.mode.value='send';"> <table> <tr> <td> <table> <tr> <td> Dit navn:<%=strFejlName ' udskriv "*" så brugeren kan se hvor der er fejl%><br> <input type="text" size="25" name="name" value="<%=strName ' udskriv værdien af feltet før submitten%>"><br> Din Email:<%=strFejlEmail%><br> <input type="text" size="25" name="email" value="<%=strEmail%>"><br> Din Telefon:<%=strFejlTelefon%><br> <input type="text" size="25" name="telefon" value="<%=strTelefon%>"><br> Angående:<%=strFejlSubject%><br> <input type="text" name="subject" size="40" value="<%=strSubject%>"><br> Skriv din kommentar her:<%=strFejlBody%><br> <textarea name="body" cols="50" rows="10" wrap="PHYSICAL"><%=strBody%></textarea><br> <input type="submit" value="Send"> <input type="reset" value="Nulstil" name="B1"> <input type="hidden" name="mode"> </td> </tr> </table> </td> </tr> </table> </form> <%=strVisInfo ' Hvis der er fejl, hvis en forklaring på "*"%> </center> </body> </html>
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.