Wrox Programmer Forums
Go Back   Wrox Programmer Forums > ASP.NET and ASP > ASP 3 Classic ASP Active Server Pages 3.0 > Classic ASP Basics
|
Classic ASP Basics For beginner programmers starting with "classic" ASP 3, pre-".NET." NOT for ASP.NET 1.0, 1.1, or 2.0
Welcome to the p2p.wrox.com Forums.

You are currently viewing the Classic ASP Basics section of the Wrox Programmer to Programmer discussions. This is a community of software programmers and website developers including Wrox book authors and readers. New member registration was closed in 2019. New posts were shut off and the site was archived into this static format as of October 1, 2020. If you require technical support for a Wrox book please contact http://hub.wiley.com
 
Old September 10th, 2009, 04:13 PM
Registered User
 
Join Date: Sep 2009
Posts: 4
Thanks: 0
Thanked 0 Times in 0 Posts
Default adding email receipt confirmation to existing asp

Hi,
I have an asp script initially from sortedsites.com that I've very minimally modified.
Code:
Dim strFrom, strTo, strSubject, strBody
Dim objMessage, objConfig, strServer, intPort
Dim recipient, redirect, subject, realname, email, required, strEmail1, strEmail2
Dim referer, url, url_verified, icounter, query, iloop, query2, query3, i, agree, validation, error0, error0ok

'############################## CONFIGURATION VARIABLES ####################################

'These are the only lines you will need to change
'----------------------------------------------------------------------------------------------------
strServer = "ip.address" ' "ip.address" set which smtp server will be used to send the email. enter ip address or domain name. eg: "xxx.xxx.xxx.xxx" or "smtp.your-domain.com"
'strServer = "smtp.your-domain.com" 'set which smtp server will be used to send the email. enter ip address or domain name. eg: "xxx.xxx.xxx.xxx" or "smtp.your-domain.com"
intPort = 25 'set the smtp port to be used when sending mail (by default port 25 is used)
'Referrer's Array is defined here. Enter the valid domains which may use this script.
url = Array("abc.com","www.abc.com")'Set which urls that will be accepted. http://xxxxx/ 127.0.0.1
'url = Array("www.your-domain.com","your-domain.com")'Set which urls that will be accepted. http://xxxxx/
	'Seperate multiple domains by commas 
	'eg: url= Array("www.your-domain.com","your-domain.com","www.my-domain.com")
	'computer names can be used instead of domains if this script is being run locally
	'eg: url = Array("computername")



'######################################### IMPORTANT NOTICE #########################################
'IMPORTANT: do not modify anything below this line unless you know what you are doing!!
'######################################### IMPORTANT NOTICE #########################################
	
'----------------------------------------------------------------------------------------------------
'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")
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(1))<3 then
					response.Write("You must specify a valid ") & query2(0)
					response.end
				end if
				strEmail2 = split(strEmail1(1),".")
				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","~")

'----------------------------------------------------------------------------------------------------
'this creates the body of the mail message, the text in quotes can be modified accordingly 
'---------------------------------------------------------------------------------------------------
strBody = "Here is the results of your form submitted from" & referer(2)  & vbnewline & vbnewline & "Name: " & realname & vbnewline &  vbnewline & "Email: " & email & vbnewline & strBody & vbnewline &  vbnewline & "############# End Formmail Tranmission #############" 

'----------------------------------------------------------------------------------------------------
'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
HTML
Code:
<form name="xyz" method="get" action="/asp/formmailUsingSortedSites.asp">
	<p>
		<label class="labelContact">Select Category:</label>
		<select class="inputContact" name="category" id="category">
			<option selected="selected" value="support" id="support">Support</option>
			<option value="sales" id="sales">Sales</option>
			<option value="other" id="other">Other</option>
		</select>
	</p>
	<p>
		<label class="labelContact" for="CommenterName">Name <span class="redasterisk">*</span>:</label>
		<input size="42" class="inputContact" name="nameCommenter" id="CommenterName" onblur="checkCompletitionName()" type="text" />
	</p>
	<p>
		<label class="labelContact" for="Email">Email Address<span class="redasterisk"> *</span>:</label>
		<input size="42" class="inputContact" name="email_address" id="Email" onblur="checkCompletitionEmail()" type="text" />
	</p>
	<p>
		<label class="labelContact" for="Phone">Phone Number:</label>
		<input id="phoneAreaCode" class="inputContact" onKeyUp="return autoTab(this, 3, event);" size="4" maxlength="3" /> -
		<input id="phonePrefix" onKeyUp="return autoTab(this, 3, event);" size="4" maxlength="3" /> -
		<input id="phoneLastFour" onKeyUp="return autoTab(this, 4, event);" size="5" maxlength="4" />
	</p>
	<p>
		<label class="labelContact" for="RegistrationNo">Realfast Registration Number:</label>
		<input size="42" class="inputContact" name="registration" id="RegistrationNo" type="text" />
	</p>
	<p>
		<label class="labelContact" for="CompanyName">Company Name:</label>
		<input size="42" class="inputContact" name="company_name" id="CompanyName" type="text" />
	</p>
	<p>Comments <span class="redasterisk">*</span>:</p>
	<p><textarea rows="5" cols="58" name="comment" id="Comment" onblur="checkCompletitionComment()"></textarea></p>
	<div id="recipient"></div> 
	<p>
		<input name="redirect" type="hidden" id="redirect" value="/contactus/comment-thankyou.html" />
		<input type="submit" name="Submit" value="Submit" onclick="formSubmission()" />
	</p>
</form>
I would like the user to receive a confirmation email with the their text and some "Thank you...." content.
I've looked around and have not been able to find anything that would work -- user error on my part more than likely, and do not understand well what all the scripts are doing.
Any help getting and about the script that would work and how/where to insert it into the existing script (what's the right wording or idea?) would be a life saver (possibly a job saver!).
thank you ever so much
 
Old September 15th, 2009, 06:08 PM
Registered User
 
Join Date: Sep 2009
Posts: 4
Thanks: 0
Thanked 0 Times in 0 Posts
Default

Hi,
I found this as an answer
Code:
 
<%
option explicit

'---------------------------------------------------------------------------------------------------
'FORM MAIL SCRIPT
'----------------
'usage:
'<form ACTION="sendmail.asp" ...>
'
'hidden fields:
'	redirect	- the url to redirect to when the mail has been sent (REQUIRED)
'	mailto		- the email address of the recipient (separate multiple recipients with commas)  (REQUIRED)
'	cc			- the email address of the cc recipient (separate multiple recipients with commas) (OPTIONAL)
'	bcc			- the email address of the bcc recipient (separate multiple recipients with commas) (OPTIONAL)
'	mailfrom	- the email address of the sender  (REQUIRED)
'	subject		- the subject line of the email  (REQUIRED)
'	message		- the message to include in the email above the field values. not used when a template is being used. (OPTIONAL)
'	template	- specifies a text or html file to use as the email template, relative to the location of the sendmail script. (e.g. ../email.txt)
'				  A template should reference form fields like this: [$Field Name$]
'	html		- if this has the value "yes", the email will be sent as an html email. only used if a template is supplied.
'	testmode	- if this is set to "yes", the email contents will be written to the screen instead of being emailed.
'---------------------------------------------------------------------------------------------------
dim pde : set pde = createobject("scripting.dictionary")
'---------------------------------------------------------------------------------------------------
'PREDEFINED ADDRESSES for the "mailto" hidden field
'if you don't want to reveal email addresses in hidden fields, use a token word instead and specify
'below which email address it applies to. e.g. <input type="hidden" name="mailto" value="%stratdepartment%">
'ALSO, in the same way, you can use %mailfrom% to hide the originating email address
pde.add "%contactform%", "[email protected]"
pde.add "%salesenquiry%", "[email protected]"
'---------------------------------------------------------------------------------------------------

function getTextFromFile(path)
	dim fso, f, txt
	set fso = createobject("Scripting.FileSystemObject")
	if not fso.fileexists(path) then
		getTextFromFile = ""
		exit function
	end if
	set f = fso.opentextfile(path,1)
	if f.atendofstream then txt = "" else txt = f.readall
	f.close
	set f = nothing
	set fso = nothing
	getTextFromFile = txt
end function

dim redir, mailto, mailfrom, subject, item, body, cc, bcc, message, html, template, usetemplate, testmode
redir = request.form("redirect")
mailto = request.form("mailto")
if pde.exists(mailto) then mailto = pde(mailto)
cc = request.form("cc")
bcc = request.form("bcc")
mailfrom = request.form("mailfrom")
if mailfrom = "" then mailfrom = pde("%mailfrom%")
subject = request.form("subject")
message = request.form("message")
template = request.form("template")
testmode = lcase(request.form("testmode"))="yes"

if len(template) > 0 then template = getTextFromFile(server.mappath(template))
if len(template) > 0 then usetemplate = true else usetemplate = false
dim msg : set msg = server.createobject("CDO.Message")
msg.subject = subject
msg.to = mailto
msg.from = mailfrom
if len(cc) > 0 then msg.cc = cc
if len(bcc) > 0 then msg.bcc = bcc

if not usetemplate then
	body = body & message & vbcrlf & vbcrlf
else
	body = template
end if
for each item in request.form
	select case item
		case "redirect", "mailto", "cc", "bcc", "subject", "message", "template", "html", "testmode"
		case else
			if not usetemplate then
				if item <> "mailfrom" then body = body & item & ": " & request.form(item) & vbcrlf & vbcrlf
			else
				body = replace(body, "[$" & item & "$]", replace(request.form(item),vbcrlf,"<br>"))
			end if
	end select
next

if usetemplate then 'remove any leftover placeholders
	dim rx : set rx = new regexp
	rx.pattern = "\[\$.*\$\]"
	rx.global = true
	body = rx.replace(body, "")
end if

if usetemplate and lcase(request.form("html")) = "yes" then
	msg.htmlbody = body
else
	msg.textbody = body
end if
if testmode then
	if lcase(request.form("html")) = "yes" then
		response.write "<pre>" & vbcrlf
		response.write "Mail to: " & mailto & vbcrlf
		response.write "Mail from: " & mailfrom & vbcrlf
		if len(cc) > 0 then response.write "Cc: " & cc & vbcrlf
		if len(bcc) > 0 then response.write "Bcc: " & bcc & vbcrlf
		response.write "Subject: " & subject & vbcrlf & string(80,"-") & "</pre>"
		response.write body
	else
		response.write "<html><head><title>Sendmail.asp Test Mode</title></head><body><pre>" & vbcrlf
		response.write "Mail to: " & mailto & vbcrlf
		response.write "Mail from: " & mailfrom & vbcrlf
		if len(cc) > 0 then response.write "Cc: " & cc & vbcrlf
		if len(bcc) > 0 then response.write "Bcc: " & bcc & vbcrlf
		response.write "Subject: " & subject & vbcrlf & vbcrlf
		response.write string(80,"-") & vbcrlf & vbcrlf & "<span style=""color:blue;"">"
		response.write body & "</span>" & vbcrlf & vbcrlf
		response.write string(80,"-") & vbcrlf & "**END OF EMAIL**</pre></body></html>"
	end if
else
		
	msg.send
	response.redirect redir
end if
set msg = nothing
%>
I combined that with some javascript (albeit a little clumsy):
Code:
var emailAddressOther = document.getElementById("emailAddress").value;
var otherRecipient = "<input name=\"mailto\" type=\"hidden\" id=\"mailto\" value=\"" + emailAddressOther + "\"";
var otherCc = "<input name=\"cc\" type=\"hidden\" id=\"cc\" value=\"[email protected]\" />";
var otherBcc = "<input name=\"bcc\" type=\"hidden\" id=\"bcc\" value=\"[email protected]\" />";
var subjectOther = "<input name=\"subject\" type=\"hidden\" id=\"subject\" value=\"Contact Form\" />";
var template = "<input name=\"template\" type=\"hidden\" id=\"template\" value=\"sendmail-template.html\" />"; 
var yesValue = "<input name=\"html\" type=\"hidden\" id=\"html\" value=\"yes\" />";
//var yesTestMode = "<input name=\"testmode\" type=\"hidden\" id=\"html\" value=\"yes\" />";
//var emailAddressOther = document.getElementById("emailAddress").value;
//var yesTestMode = "<input name=\"testmode\" type=\"hidden\" id=\"html\" value=\"yes\" />";
document.getElementById("recipient").innerHTML = otherRecipient + otherCc + otherBcc + subjectOther +template + yesValue;
and the html form.
So the person submitting the form gets a confirmation and the form gets sent to the right location internally to customer service.





Similar Threads
Thread Thread Starter Forum Replies Last Post
webshop email confirmation message Nick23 BOOK: ASP.NET 2.0 Instant Results ISBN: 978-0-471-74951-6 3 September 14th, 2007 03:43 PM
Adding AJAX to existing ASP.NET application lols BOOK: Beginning Ajax with ASP.NET 1 January 29th, 2007 10:25 PM
Email Confirmation Katachi Dreamweaver (all versions) 1 December 18th, 2005 07:19 AM
Adding existing and non-existing attributes spencer.clark XSLT 5 July 27th, 2005 04:02 PM





Powered by vBulletin®
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Copyright (c) 2020 John Wiley & Sons, Inc.