Gå til innhold

Anbefalte innlegg

Hallois

 

Jeg er totalt novice når det kommer til programmeringsspråk, men har nylig fått i oppgave å fikse en feil på hjemmesidene til jobben. De har tidligere hatt ett domene som støtter .php, men nå har de endret til Telenor (og de støtter selvfølgelig ikke php, ) Så nå må jeg lete Google rundt etter en kode som gjør det samme som (http://www.tectite.com/formmailpage.php) gjør men i ASP,(kunden fyller ut en form for at denne så blir sent som HTML til jobbens e-post).

 

Jeg har lett og lett, og søkt og søkt og det eneste resultatet jeg har kommet frem til er denne siden

 

http://www.codeproject.com/KB/asp/sendmail.aspx <- Men koden er visst eldgammel og fungerer ikke lengre. (koden er skrevet i 2003/2006)

 

Jeg har søkt og søkt på Google (spurt venner som kan mer om asp og prog språk enn meg) men det er ingen som kan gi meg ett godt svar på hvordan jeg kan legge til at skjemaet blir sent via en HTML template.

 

har tittet og prøvd med denne også - http://www.sortedsites.com/formmail men jeg klarer ikke å legge til at skjemaet skal bruke min template.html

 

(altså en løsning som gjør at vi kan bruke jobbens template.html som resultat ved sending av skjema)

Noen som har tid til å se på dette? Er sykt frustrert, og sjefen er misfornøyd med at han må skrive ut 6 A4 sider der han tidligere kun trengte 1 :(

Lenke til kommentar
Videoannonse
Annonse
Du kan ikke gjøre det i rein HTML. Du må ha et serverside språk.

 

Ehm... Kan du utdype? jeg har en formmail.asp men den henter ikke noe informasjon fra en template. Utenom det fungerer den perfekt, bare at resultatet fra skjemaet blit 6A4 sider langt, istedet for på 1 A4 side som tabeller.

Lenke til kommentar

Litt vanskelig å svare uten å vite hva koden gjør. Lettere om du poster formmail.asp, eller ihvertfall delen som lager innholdet i e-posten.

 

Legger med nesten hele formmail.asp, aner ikke hvordan jeg gjør så man kan skjule/vise den så jeg legger den i code jeg >.<

 

'----------------------------------------------------------------------------------------------------
'information type and CDOSYS constants
'----------------------------------------------------------------------------------------------------
%>
<!--METADATA TYPE="typelib"
UUID="CD000000-8B95-11D1-82DB-00C04FB1625D"
NAME="CDO for Windows 2000 Library" -->
<!--METADATA TYPE="typelib"
UUID="00000205-0000-0010-8000-00AA006D2EA4"
NAME="ADODB Type Library" -->
<%
'----------------------------------------------------------------------------------------------------
'retrieved default fields
'----------------------------------------------------------------------------------------------------
recipient = request("recipient")
redirect = request("redirect")
subject = request("subject")
email = request("email")
realname = request("realname")
required = request("required") 
if required = "" then
required = "recipient,subject,email,redirect"
else
required = "recipient,subject,email,redirect," & required
end if

'----------------------------------------------------------------------------------------------------
'verify the referer
'----------------------------------------------------------------------------------------------------
referer = request.ServerVariables("HTTP_REFERER") 
referer = split(referer,"/")
url_verified = "no"
for icounter = Lbound(url) to Ubound(url) '
if referer(2) = url(icounter) then
	url_verified = "yes"
end if
next
if not url_verified = "yes" then 
response.write("The url specified is invalid!")
response.End
end if

'----------------------------------------------------------------------------------------------------
'verify the recipient(not tested)
'----------------------------------------------------------------------------------------------------
'trimed_referer = split(referer(2),".")'
'response.write recipient & "<br>" & referer(2) & "=" & trimed_referer(0) & "<br>"
'if trimed_referer(0) = "www" then
'	if InStr(1,recipient,trimed_referer(1),1) = 0 then
'		response.write "recipient don't match the referer"
'		response.end
'	end if
'else
'	if InStr(1,recipient,trimed_referer(0),1) = 0 then
'		response.write "recipient don't match the referer"
'		response.end
'	end if
'end if

'----------------------------------------------------------------------------------------------------
'retrieve form contents and create email fields
'---------------------------------------------------------------------------------------------------- 
query = Request.ServerVariables("QUERY_STRING") 
query = split(query,"&")
query3 = split(required,",")
For iLoop = Lbound(query) to UBound(query)
	query2 = split(query(iloop),"=")

'----------------------------------------------------------------------------------------------------
'form validation, checks required fields are not null
'----------------------------------------------------------------------------------------------------
	for i = LBound(query3) to UBound(query3)
		if query3(i) = query2(0) then
			if query2(1) = "" then
				response.write ("you must enter a valid ") & query2(0)
				response.end
			end if
		end if

		'if query2(0) = "agree" then
			'if query2(1) <> "on" or query2(1) = "" then
			'	response.write("You must agree to terms and conditions to enable Formmailv1.3 to execute!")
			'response.end
			'end if
		'end if

'----------------------------------------------------------------------------------------------------
'form validation, checks a valid email address has been specified
'----------------------------------------------------------------------------------------------------			
		if query2(0) = "email" then
			trim(query2(0))
			if len(query2(1))<8 then
				response.Write("You must specify a valid ") & query2(0)
				response.end
			end if
			if instr(query2(1),"@")=0 and instr(query2(1),".")=0 then
				response.write query2(1)
				response.Write("You must specify a valid ") & query2(0)
				response.end
			end if
			strEmail1 = split(query2(1),"@")
			if len(strEmail1(0))<3 then
				response.Write("You must specify a valid ") & query2(0)
				response.end
			end if
			strEmail2 = split(strEmail1(0),".")
			if len(strEmail2(0))<3 then
				response.Write("You must specify a valid ") & query2(0)
				response.end
			end if
			if len(strEmail2(1))<2 then
				response.Write("You must specify a valid ") & query2(0)
				response.end
			end if
		end if

'----------------------------------------------------------------------------------------------------
'form validation, checks terms and conditions checkbox has been ticked
'----------------------------------------------------------------------------------------------------

	Next
	if not query2(0) = "recipient" and not query2(0) = "redirect" and not query2(0) = "subject" and not query2(0) = "realname" and not query2(0) = "email" and not query2(0) = "required" and not query2(0) = "agree" then
		strBody = strBody & vbnewline & vbnewline & query2(0) &": " & query2(1) 
	end if
Next
if email = "" then
email = "formmail@" & referer(2)
end if
'----------------------------------------------------------------------------------------------------
'replaces any special characters parsed through the query string
'----------------------------------------------------------------------------------------------------
strbody = replace(strbody, "+"," ")
strbody = replace(strbody, "%26%238364%3B","€")
strbody = replace(strbody, "%A1","¡")
strbody = replace(strbody, "%A3","£")
strbody = replace(strbody, "%A8","¨")
strbody = replace(strbody, "%AA","ª")
strbody = replace(strbody, "%AC","¬")
strbody = replace(strbody, "%B4","´")
strbody = replace(strbody, "%B7","·")
strbody = replace(strbody, "%BA","º")
strbody = replace(strbody, "%BF","¿")
strbody = replace(strbody, "%C7","Ç")
strbody = replace(strbody, "%E7","ç")
strbody = replace(strbody, "%0D%0A",vbnewline)
strbody = replace(strbody, "%21","!")
strbody = replace(strbody, "%23","#")
strbody = replace(strbody, "%24","$")
strbody = replace(strbody, "%25","%")
strbody = replace(strbody, "%26","&")
strbody = replace(strbody, "%27","'")
strbody = replace(strbody, "%28","(")
strbody = replace(strbody, "%29",")")
strbody = replace(strbody, "%2B","+")
strbody = replace(strbody, "%2C",",")
strbody = replace(strbody, "%2D","-")
strbody = replace(strbody, "%2E",".")
strbody = replace(strbody, "%2F","/")
strbody = replace(strbody, "%3A",":")
strbody = replace(strbody, "%3B",";")
strbody = replace(strbody, "%3C","<")
strbody = replace(strbody, "%3D","=")
strbody = replace(strbody, "%3E",">")
strbody = replace(strbody, "%3F","?")
strbody = replace(strbody, "%5B","[")
strbody = replace(strbody, "%5C","\")
strbody = replace(strbody, "%5D","]")
strbody = replace(strbody, "%5E","^")
strbody = replace(strbody, "%5F","_")
strbody = replace(strbody, "%60","`")
strbody = replace(strbody, "%7B","{")
strbody = replace(strbody, "%7C","|")
strbody = replace(strbody, "%7D","}")
strbody = replace(strbody, "%7E","~")
strbody = replace(strbody, "%C3%A6","æ")
strbody = replace(strbody, "%C3%B8","ø")
strbody = replace(strbody, "%C3%A5","å")
strbody = replace(strbody, "%C3%86","Æ")
strbody = replace(strbody, "%C3%98","Ø")
strbody = replace(strbody, "%C3%85","Å")


'----------------------------------------------------------------------------------------------------
'this creates the body of the mail message, the text in quotes can be modified accordingly 
'---------------------------------------------------------------------------------------------------
strBody = "Dette er resultatet fra  " & referer(2)  & vbnewline & vbnewline & "Navn: " & realname & vbnewline &  vbnewline & "E-post: " & email & vbnewline & strBody & vbnewline &  vbnewline & "##### Skjema slutt #####" 

'----------------------------------------------------------------------------------------------------
'checks if a smtp port has been specified, if not it uses the default port 25
'----------------------------------------------------------------------------------------------------
if intport <> 25 then
intport = intport
else
intport = 25
end if

'----------------------------------------------------------------------------------------------------
'send the mail message
'----------------------------------------------------------------------------------------------------	
set objMessage = CreateObject("CDO.Message")
objMessage.To = recipient
objMessage.From = email
objMessage.Subject = subject
objMessage.Sender = email
objMessage.Textbody = strBody

'----------------------------------------------------------------------------------------------------
'cdosys configuration setup
'----------------------------------------------------------------------------------------------------
set objConfig = CreateObject("CDO.Configuration")
objConfig.Fields(cdoSendUsingMethod) = cdoSendUsingPort
objConfig.Fields(cdoSMTPServer) = strServer
objConfig.Fields(cdoSMTPServerPort) = intPort
objConfig.Fields(cdoSMTPAuthenticate) = cdoAnonymous
objConfig.Fields.Update
set objMessage.Configuration = objConfig

'----------------------------------------------------------------------------------------------------
'define error handling procedures
'----------------------------------------------------------------------------------------------------
On Error Resume Next
objMessage.Send
If Err.Number = 0 then
response.write("Formmail v1.3 processed all operations successfully!")
else
response.write("Formmail v1.3 detected the following errors:")& "<br>"
response.write("error no.: ")&err.number & "<br>"
response.write("description: ")&err.description & "<br>"
response.end
End If
On Error Goto 0

'----------------------------------------------------------------------------------------------------
'send them to the page specified
'----------------------------------------------------------------------------------------------------
Response.Redirect redirect

'####################################################################################################

 

Så greia er at jeg trenger å kunne sende resultatet fra formmail.asp til e-posten i HTML ikke ren tekst, så jeg tenker at dette området må konfigureres

 

this creates the body of the mail message, the text in quotes can be modified accordingly 
'---------------------------------------------------------------------------------------------------

strBody = "Dette er resultatet fra  " & referer(2)  & vbnewline & vbnewline & "Navn: " & realname & vbnewline &  vbnewline & "E-post: " & email & vbnewline & strBody & vbnewline &  vbnewline & "##### Skjema slutt #####" 

 

strBody er alle variable + ID fra skjemaet. Så vi trenger at disse først går igjennom template.html, og så bli sendt til e-posten vår.

 

Er fortsatt på leting etter ett alternativ på nettet, men finner faktisk ikke en eneste siden som kan levere form-resultat som html, eller

Lenke til kommentar

Ser ut som den bare konkatenerer sammen alle argumentene i en streng med dobbelt linjeskift mellom hver entry.

 

Du sier HTML-mal? Det høres ut som det er en eller annen custom template/merge operasjon dere har hatt i PHP da?

 

Man kan normalt ikke merge inn dynamiske felter direkte i HTML, det bruker man normalt XSLT til. Her kan man enten lage seg en XSLT stylesheet og serialisere dataene som XML, eller, om man føler seg "skitten", hardkode inn html rett i koden (der det står "strBody = ...")

 

Disclaimer: Dette er ikke ett eksempel på god kodeskikk, men en nødløsning om man vil rydde litt opp med minimale kunnskaper og ressursbruk.

 

Som en "Quickfix" kan du begynne med å tilordne strBody til objMessage.HtmlBody i stedet for objMessage.TextBody. Da vil meldingen bli kodet som html "Automagisk". Da må selvfølgelig også alle vbNewLine erstattes med "<br />".

 

Hvis du da i tillegg legger alle argumentene i en tabell:

 

if not query2(0) = "recipient" and not query2(0) = "redirect" and not query2(0) = "subject" and not query2(0) = "realname" and not query2(0) = "email" and not query2(0) = "required" and not query2(0) = "agree" then
   strBody = strBody & "<tr><td>" & query2(0) &"</td><td>" & query2(1) & "</td></tr>"
end if

 

Og til slutt:

strBody = "Dette er resultatet fra  " & referer(2)  & "<br /><br />" & "Navn: " & realname & "<br /><br />" & "E-post: " & email & "<br />" & "<table>" &strBody & "</table>" & "<br /><br />" & "##### Skjema slutt #####"

Endret av MailMan13
Lenke til kommentar

Du kan lese innholdet i HTML-filen til en streng, som du kjører replace på mot formen som ble sendt av brukeren for så å sende output til jobb eposten.

 

Er det ASP.Net støtte? Eller bare gammeldags ASP støtte?

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...