Formular til asp-formmail - jmail

Siden er opdateret 13. 12. 2009

Herunder ser du en formular, der fungerer via et asp-script: Når brugere klikker på Send mail, sender formularen det indtastede til et aspscript på serveren. Her sker den videre ekspedition (heri ligger modtagerens emailadresse - bekvemt uden for spamrobotternes rækkevidde).

Vær opmærksom på, at selv om dit webhotel understøtter jmail, kan der være forskellige opsætninger, der gør, at dette script måske ikke virker på netop dit hotel. På et webhotel hos Azero er det testet og virker.

Selve formularen er der sådan set ikke meget hokuspokus i:

<form id="kontakt" method="post" action="mail_sender.asp"
enctype="multipart/form-data">

<fieldset>
<legend>Husk at udfylde alle felterne</legend>

<label for="t1">Navn:</label>
<input id="t1" type="text" name="navn" /><br />

<label for="t2">Email:</label>
<input id="t2" type="text" name="mail" /><br />

<label for="t3">Emne:</label>
<input id="t3" type="text" name="emne" /><br />

<span style="display:none">
<label for="23">Message:</label><input type="text" id="t23" name="message"
value="<%=Message%>" /><br />
</span>

<label for="t4">Besked:</label>
<textarea id="t4" name="besked" rows="10" cols="49"></textarea><br />
<label for="t5">&nbsp;</label>
<input id="t5" type="submit" value="Send" />
<input type="reset" value="Slet" />
</fieldset>

</form>

Læg mærke til denne kodesekvenns:

<span style="display:none">
<label for="23">Message:</label><input type="text" id="t23" name="message"
value="<%=Message%>" /><br />
</span>

Der er tale om et skjult inputfelt, et felt der ikke må skrives i. En spambot bemærker ikke, at feltet med css er blevet skjult for almindelige brugere og fylder bare indhold i feltet.


Scriptet, der kaldes af formularen, er øverst i formularen defineret til at hedde mail_sender.asp. Scriptet forudsætter, at dit webhotel foruden asp også understøtter funktionen jmail.

Først skal du øverst på din mail_sender.asp - over DTD - indsætte denne kode:

<%@LANGUAGE="VBSCRIPT" %>
<% session.LCID = 1030 %>

Scriptet herunder lægges mellem <body> og </body>mail_sender.asp:

<%
set msg = Server.CreateOBject( "JMail.Message" )
Set upload = Server.CreateObject( "w3.Upload" )

msg.Logging = true
msg.silent = true

name = upload.Form("navn")
senderEmail = upload.Form("mail")
subject = upload.Form("emne")

 ' tjek, at der ikke er skrevet i det fobudte felt
 Message = upload.Form("Message")
 If Not Len(Message) = 0 Then
  ' Der er blevet skrevet i Message, bloker indlægget
  Response.Redirect "blokeret.asp"
 End If

recipient = ("navn@domæne.dk")
body = upload.Form("besked")
ip = Request.ServerVariables("REMOTE_ADDR")

msg.From = SenderEmail
msg.FromName = Name
msg.AddRecipient Recipient
msg.AddRecipientBCC senderEmail
msg.Subject = Subject

msg.Body = "Meddelelse den " & Date & " klokken " & Time & " fra: " & recipient & vbCrLf & "Navn: " & name & vbCrLf & "Mail: " & senderEmail & vbCrLf & "Emne:" & vbCrLf & subject & vbCrLf & "Tekst: " & vbCrLf & body

if not msg.Send("websmtp.domæne.dk") then
msg.Send("mailrelay.webhotel.dk")
echo $"<pre>" & msg.log & "</pre>"
else
echo $"<p>Meddelelse afsendt den " & Date & " klokken " & Time & "<br /><br /><b>Fra: </b>" & name & "<br /><br />" & "<b>Mail: </b><a href='mailto:" & senderEmail & "'>" & senderEmail & "</a> <br /><br />" & "<b>Emne: </b>" & subject & "<br /><br /><b>Tekst: </b>" & body & "<br /><br />Tak for din henvendelse. Jeg vender tilbage så hurtigt som muligt." & "</p>"
end if
%>

Læg mærke til scriptets fjerde kodeblok:

' tjek, at der ikke er skrevet i det fobudte felt
Message = upload.Form("Message")
If Not Len(Message) = 0 Then
//' Der er blevet skrevet i Message, bloker indlægget
Response.Redirect "blokeret.asp"
End If

Det er den funktion, som tjekker, at der ikke er blevet skrevet noget i det forbudte felt. Er der skrevet noget, bliver mailen ikke sendt og der sendes i stedet videre til en fejlside.

I scriptets femte blok står der i første linje navn@domæne.dk, det udskifter du med din egen e-mail-adresse.

I scriptets sjette blok samles mailens enkeltdele fra formularen og linjen msg.AddRecipientBCC senderEmail sørger for, at afsenderen af mailen får en kopi tilsendt - det er den eneste mulighed afsenderen har for at se, hvad der er blevet sendt.

I ottende blok står der i første linje websmtp.domæne.dk, find hos dit webhotel ud af, hvad du skal skrive der. I anden linje står der mailrelay.webhotel.dk, find hos dit webhotel ud af, hvad du skal skrive der.


Når brugeren efterfølgende via din mailformular skriver til dig, får han denne besked skrevet ud på en ny webside:

Meddelelse afsendt den 02-01-2004 klokken 16:29:59

Fra: Det af brugeren indtastede navn
Mail: en_bruger@hansdomæne.dk
Emne: Det af brugeren indtastede emne
Tekst: Den af brugeren indtastede besked

Tak for din henvendelse. Jeg vender tilbage så hurtigt som muligt.

På siden står tidspunktet for afsendelse samt afsenders navn og e-mail-adresse + emne og tekst - til han egen orientering.

Bemærk, at ikke på noget tidspunkt kommer en spamrobot i nærheden af din e-mail-adresse.

^ Tilbage til sidens top

Valid XHTML og CSS / Copyright © Hjemmesideskolen januar 2004
Hjemmesideskolen
Du er her: Forsiden - scripts - Formular til asp-formmail
Brugere lige nu: 1
Home Mail