# help please Microsoft VBScript runtime error '800a01a8' Object required: 'Mail'



## natalie humphrey (Feb 27, 2009)

Hi there I have loaded the following script onto my smtp.asp text page and then I get this error when its uploaded and i click send on my web page to do a test:

Microsoft VBScript runtime  error '800a01a8' 
Object required: 'Mail' 
/smtp.asp, line 383

<%@ LANGUAGE="VBScript" %>
<%

referers = Array("www.rhodespropertyonline.com")
mailComp = "ASPMail"
smtpServer = "pop.secureserver.net"
fromAddr = "www.rhodespropertyonline.com"

'- End required customization section. -------------------------------------

Response.Buffer = true
errorMsgs = Array()

'Check for form data.

if Request.ServerVariables("Content_Length") = 0 then
call AddErrorMsg("No form data was submitted.")
end if

'Check if referer is allowed.

if UBound(referers) >= 0 then
validReferer = false
referer = GetHost(Request.ServerVariables("HTTP_REFERER"))
for each host in referers
if host = referer then
validReferer = true
end if
next
if not validReferer then
if referer = "" then
call AddErrorMsg("Invalid referer page.")
else
call AddErrorMsg("Invalid referer page: '" & referer & "'.")
end if
end if
end if

'Required fields

if Request.Form("_name") = "" then
call AddErrorMsg("Name")
end if

if Request.Form("_organization") = "" then
call AddErrorMsg("Organization")
end if

' if Request.Form("_title") = "" then
' call AddErrorMsg("Title or Position")
' end if

' if Request.Form("_address") = "" then
' call AddErrorMsg("Address")
' end if

' if Request.Form("_address2") = "" then
' call AddErrorMsg("Address 2")
' end if

' if Request.Form("_city") = "" then
' call AddErrorMsg("City")
' end if

' if Request.Form("_state") = "" then
' call AddErrorMsg("State")
' end if

' if Request.Form("_country") = "" then
' call AddErrorMsg("Country")
' end if

' if Request.Form("_zip") = "" then
' call AddErrorMsg("Zip")
' end if

' if Request.Form("_phone") = "" then
' call AddErrorMsg("Phone")
' end if

' if Request.Form("_fax") = "" then
' call AddErrorMsg("Fax")
' end if

if Request.Form("_email") = "" then
call AddErrorMsg("E-mail")
end if

if Request.Form("_comments") = "" then
call AddErrorMsg("Comments")
end if

'Check all recipient email addresses.

recipients = Split(Request.Form("_email"), ",")
for each name in recipients
name = Trim(name)
if not IsValidEmailAddress(name) then
call AddErrorMsg("*Invalid email: *" & name)
end if
next
recipients = Join(recipients, ",")

'Get replyTo email address from specified field, if given, and check it.

name = Trim(Request.Form("_replyToField"))
if name <> "" then
replyTo = Request.Form(name)
else
replyTo = Request.Form("_replyTo")
end if
if replyTo <> "" then
if not IsValidEmailAddress(replyTo) then
call AddErrorMsg("Invalid email address " & replyTo & ".")
end if
end if

'Get subject text.

subject = Request.Form("_subject")

'If required fields are specified, check for them.

if Request.Form("_required") <> "" then
required = Split(Request.Form("_required"), ",")
for each name in required
name = Trim(name)
if Left(name, 1) <> "_" and Request.Form(name) = "" then
call AddErrorMsg("Missing value for " & name)
end if
next
end if

'If a field order was given, use it. Otherwise use the order the fields were
'received in.

str = ""
if Request.Form("_fieldOrder") <> "" then
fieldOrder = Split(Request.Form("_fieldOrder"), ",")
for each name in fieldOrder
if str <> "" then
str = str & ","
end if
str = str & Trim(name)
next
fieldOrder = Split(str, ",")
else
fieldOrder = FormFieldList()
end if

'If there were no errors, build the email note and send it.

if UBound(errorMsgs) < 0 then

'Send it.

str = SendMail()
if str <> "" then
AddErrorMsg(str)
end if

'Redirect if a URL was given.

if Request.Form("_redirect") <> "" then
Response.Redirect(Request.Form("_redirect"))
end if

end if %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">


 

Contact Us



<% if UBound(errorMsgs) >= 0 then %>
*The form was not submitted!
The following is required:*

<% for each msg in errorMsgs %>
*<% = msg %>*
<% next %>

*ClICK HERE TO GO BACK TO FORM*
<% else %>

<% end if %>



<% '---------------------------------------------------------------------------
' Subroutines and functions.
'---------------------------------------------------------------------------

sub AddErrorMsg(msg)

dim n

'Add an error message to the list.

n = UBound(errorMsgs)
Redim Preserve errorMsgs(n + 1)
errorMsgs(n + 1) = msg

end sub

function GetHost(url)

dim i, s

GetHost = ""

'Strip down to host or IP address and port number, if any.

if Left(url, 7) = "http://" then
s = Mid(url, 8)
elseif Left(url, 8) = "https://" then
s = Mid(url, 9)
end if
i = InStr(s, "/")
if i > 1 then
s = Mid(s, 1, i - 1)
end if

getHost = s

end function

'Define the global list of valid TLDs.

dim validTlds

function IsValidEmailAddress(emailAddr)

dim i, localPart, domain, charCode, subdomain, subdomains, tld

'Check for valid syntax in an email address.

IsValidEmailAddress = true

'Parse out the local part and the domain.

i = InStrRev(emailAddr, "@")
if i <= 1 then
IsValidEmailAddress = false
exit function
end if
localPart = Left(emailAddr, i - 1)
domain = Mid(emailAddr, i + 1)
if Len(localPart) < 1 or Len(domain) < 3 then
IsValidEmailAddress = false
exit function
end if

'Check for invalid characters in the local part.

for i = 1 to Len(localPart)
charCode = Asc(Mid(localPart, i, 1))
if charCode < 32 or charCode >= 127 then
IsValidEmailAddress = false
exit function
end if
next

'Check for invalid characters in the domain.

domain = LCase(domain)
for i = 1 to Len(domain)
charCode = Asc(Mid(domain, i, 1))
if not ((charCode >= 97 and charCode <= 122) or (charCode >= 48 and charCode <= 57) or charCode = 45 or charCode = 46) then
IsValidEmailAddress = false
exit function
end if
next

'Check each subdomain.

subdomains = Split(domain, ".")
for each subdomain in subdomains
if Len(subdomain) < 1 then
IsValidEmailAddress = false
exit function
end if
next

'Last subdomain should be a TDL.

tld = subdomains(UBound(subdomains))
if not IsArray(validTlds) then
call SetValidTlds()
end if
for i = LBound(validTlds) to UBound(validTlds)
if tld = validTlds(i) then
exit function
end if
next
IsValidEmailAddress = false

end function

sub setValidTlds()

'Load the global list of valid TLDs.

validTlds = Array("aero", "biz", "com", "coop", "edu", "gov", "info", "int", "mil", "museum", "name", "net", "org", "pro", _
"ac", "ad", "ae", "af", "ag", "ai", "al", "am", "an", "ao", "aq", "ar", "as", "at", "au", "aw", "az", _
"ba", "bb", "bd", "be", "bf", "bg", "bh", "bi", "bj", "bm", "bn", "bo", "br", "bs", "bt", "bv", "bw", "by", "bz", _
"ca", "cc", "cd", "cf", "cg", "ch", "ci", "ck", "cl", "cm", "cn", "co", "cr", "cu", "cv", "cx", "cy", "cz", _
"de", "dj", "dk", "dm", "do", "dz", "ec", "ee", "eg", "eh", "er", "es", "et", _
"fi", "fj", "fk", "fm", "fo", "fr", _
"ga", "gd", "ge", "gf", "gg", "gh", "gi", "gl", "gm", "gn", "gp", "gq", "gr", "gs", "gt", "gu", "gw", "gy", _
"hk", "hm", "hn", "hr", "ht", "hu", _
"id", "ie", "il", "im", "in", "io", "iq", "ir", "is", "it", _
"je", "jm", "jo", "jp", _
"ke", "kg", "kh", "ki", "km", "kn", "kp", "kr", "kw", "ky", "kz", _
"la", "lb", "lc", "li", "lk", "lr", "ls", "lt", "lu", "lv", "ly", _
"ma", "mc", "md", "mg", "mh", "mk", "ml", "mm", "mn", "mo", "mp", "mq", "mr", "ms", "mt", "mu", "mv", "mw ", "mx", "my", "mz", _
"na", "nc", "ne", "nf", "ng", "ni", "nl", "no", "np", "nr", "nu", "nz", _
"om", _
"pa", "pe", "pf", "pg", "ph", "pk", "pl", "pm", "pn", "pr", "ps", "pt", "pw", "py", _
"qa", _
"re", "ro", "ru", "rw", _
"sa", "sb", "sc", "sd", "se", "sg", "sh", "si", "sj", "sk", "sl", "sm", "sn", "so", "sr", "st", "sv", "sy", "sz", _
"tc", "td", "tf", "tg", "th", "tj", "tk", "tm", "tn", "to", "tp", "tr", "tt", "tv", "tw", "tz", _
"ua", "ug", "uk", "um", "us", "uy", "uz", _
"va", "vc", "ve", "vg", "vi", "vn", "vu", _
"wf", "ws", _
"ye", "yt", "yu", _
"za", "zm", "zw")

end sub

function FormFieldList()

dim str, i, name

'Build an array of form field names ordered as they were received.

str = ""
for i = 1 to Request.Form.Count
for each name in Request.Form
if Left(name, 1) <> "_" and Request.Form(name) is Request.Form(i) then
if str <> "" then
str = str & ","
end if
str = str & name
exit for
end if
next
next
FormFieldList = Split(str, ",")

end function

function SendMail()

Set Mail=Server.CreateObject("Persits.MailSender")

Mail.Host="asp1"
Mail.Subject="Web form submission received"
Mail.From= Request.Form ("_email")
Mail.AddAddress "[email protected]"
Mail.AddBcc "[email protected]"
Mail.IsHTML = True
Mail.Body = Mail.Body & _
"
Web Form Submission Name:" & Request.Form ("_name") &_
"Organization:" & Request.Form ("_organization") &_
"Title:" & Request.Form ("_title")&_
"Address:" & Request.Form ("_address")&_
"Address2:" & Request.Form ("_address2")&_
"City:" & Request.Form ("_city")&_
"State:" & Request.Form ("_state")&_
"Country:" & Request.Form ("_country")&_
"Zip:" & Request.Form ("_zip")&_
"Phone:" & Request.Form ("_phone")&_
"Fax:" & Request.Form ("_fax")&_
"Email:" & Request.Form ("_email")&_
"Comments:" & Request.Form ("_comments")&_
"
" &_
""
On Error Resume Next
Mail.Send

If Err <> 0 Then
response.write(Err.Description)
else

Set Fields = Nothing
Set objMessage = Nothing
Set objConfig = Nothing
'response.write("No Error") 'debug
Response.Expires = 0
Response.Expiresabsolute = Now() - 1
Response.AddHeader "pragma","no-cache"
Response.AddHeader "cache-control","private"
Response.CacheControl = "no-cache"

End if

end function %>

please if anyone can helpwhat i missing then i would really appreciate it, i am going crazy, thanks natalie


----------

