Hello and welcome to our community! Is this your first visit?
Register
Enjoy an ad free experience by logging in. Not a member yet? Register.
Results 1 to 7 of 7
  1. #1
    New Coder
    Join Date
    Aug 2005
    Posts
    40
    Thanks
    0
    Thanked 0 Times in 0 Posts

    please help me with this code

    I'm totally new to ASP and I'm having a lot of problems with this code. it's for an e-mail submission form. I don't know how to edit it for the job. Please help if you can.
    Here is the form:
    Code:
     <form action="./html/mailform.asp" method="post">
    <p>
    <input name="_recipients" type="hidden" value="me@myweb.com"/>
    <input name="_requieredFields" type="hidden"
      value="Email" />
    <input name="_replyToField" type="hidden" value="Email Address" />
    <input type="_subject" type="hidden" value="newsletter submission" />
    <font size="3">
    <font color="#FF0000">
    Join Our Monthly<br>
    Mailing List</font><br>
    <font size="2">
    <font color="#ffffff">
    Enter Your E-mail:</font><br>
     <input name="Email" type="text" /><br/>
    <input type="submit" value="Sign Up" />
    <input name="_redirect" type="hidden" value="./html/Registration.asp" />
    </p>
    </form>
    and here is the ASP code:
    Code:
    <%@ LANGUAGE="VBScript" %>
    <% '***************************************************************************
       '* ASP FormMail                                                            *
       '*                                                                         *
       '* Do not remove this notice.                                              *
       '*                                                                         *
       '* Copyright 1999-2002 by Mike Hall.                                       *
       '* Please see http://www.brainjar.com for documentation and terms of use.  *
       '***************************************************************************
    
       '- Customization of these values is required, see documentation. -----------
    
       referers   = Array("www.myweb.com")
       mailComp   = "ASPMail"
       smtpServer = "mail.myweb.com"
       fromAddr   = "mail@myweb.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 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("No referer.")
           else
             call AddErrorMsg("Invalid referer: '" & referer & "'.")
           end if
         end if
       end if
    
       'Check for the recipients field.
    
       if Request.Form("_recipients") = "" then
         call AddErrorMsg("Missing email recipient.")
       end if
    
       'Check all recipient email addresses.
    
       recipients = Split(Request.Form("_recipients"), ",")
       for each name in recipients
         name = Trim(name)
         if not IsValidEmailAddress(name) then
           call AddErrorMsg("Invalid email address in recipient list: " & 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 in reply-to field: " & replyTo & ".")
         end if
       end if
    
       'Get subject text.
    
       subject = Request.Form("_subject")
    
       'If required fields are specified, check for them.
    
       if Request.Form("_requiredFields") <> "" then
         required = Split(Request.Form("_requiredFields"), ",")
         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
    
         'Build table of form fields and values.
    
         body = "<table border=""0"" cellpadding=""2"" cellspacing=""0"">" & vbCrLf
         for each name in fieldOrder
           body = body _
                & "<tr valign=""top"">" _
                & "<td><b>" & name & ":</b></td>" _
                & "<td>" & Request.Form(name) & "</td>" _
                & "</tr>" & vbCrLf
         next
         body = body & "</table>" & vbCrLf
    
         'Add a table for any requested environmental variables.
    
         if Request.Form("_envars") <> "" then
           body = body _
                & "<p>&nbsp;</p>" & vbCrLf _
                & "<table border=""0"" cellpadding=""2"" cellspacing=""0"">" & vbCrLf
           envars = Split(Request.Form("_envars"), ",")
           for each name in envars
             name = Trim(name)
             body = body _
                  & "<tr valign=""top"">" _
                  & "<td><b>" & name & ":</b></td>" _
                  & "<td>" & Request.ServerVariables(name) & "</td>" _
                  & "</tr>" & vbCrLf
           next
           body = body & "</table>" & vbCrLf
         end if
    
         '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 XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
    <title>Form Mail</title>
    <style type="text/css">
    
    body {
      background-color: #ffffff;
      color: #000000;
      font-family: Arial, Helvetica, sans-serif;
      font-size: 10pt;
    }
    
    table {
      border: solid 1px #000000;
      border-collapse: collapse;
    }
    
    td, th {
      border: solid 1px #000000;
      border-collapse: collapse;
      font-family: Arial, Helvetica, sans-serif;
      font-size: 10pt;
      padding: 2px;
      padding-left: 8px;
      padding-right: 8px;
    }
    
    th {
      background-color: #c0c0c0;
    }
    
    .error {
      color: #c00000;
    }
    
    </style>
    </head>
    <body>
    
    <% if UBound(errorMsgs) >= 0 then %>
    <p class="error">Form could not be processed due to the following errors:</p>
    <ul>
    <%   for each msg in errorMsgs %>
      <li class="error"><% = msg %></li>
    <%   next %>
    </ul>
    <% else %>
    <table cellpadding="0" cellspacing="0">
    <tr>
      <th colspan="2" valign="bottom">
      Thank you, the following information has been sent:
      </th>
    </tr>
    <%   for each name in fieldOrder %>
    <tr valign="top">
      <td><b><% = name %></b></td>
      <td><% = Request.Form(name) %></td>
    </tr>
    <%   next %>
    </table>
    <% end if %>
    
    </body>
    </html>
    
    <% '---------------------------------------------------------------------------
       ' 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()
    
         dim mailObj, cdoMessage, cdoConfig
         dim addrList
    
         'Send email based on mail component. Uses global variables for parameters
         'because there are so many.
    
         SendMail = ""
    
         'Send email (CDONTS version). Note: CDONTS has no error checking.
    
         if mailComp = "CDONTS" then
           set mailObj = Server.CreateObject("CDONTS.NewMail")
           mailObj.BodyFormat = 0
           mailObj.MailFormat = 0
           mailObj.From = fromAddr
           mailObj.Value("Reply-To") = replyTo
           mailObj.To = recipients
           mailObj.Subject = subject
           mailObj.Body = body
           mailObj.Send
           set mailObj = Nothing
           exit function
         end if
    
         'Send email (CDOSYS version).
    
         if mailComp = "CDOSYS" then
           set cdoMessage = Server.CreateObject("CDO.Message")
           set cdoConfig = Server.CreateObject("CDO.Configuration")
           cdoConfig.Fields("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
           cdoConfig.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver") = smtpServer
           cdoConfig.Fields.Update
           set cdoMessage.Configuration = cdoConfig
           cdoMessage.From =  fromAddr
           cdoMessage.ReplyTo = replyTo
           cdoMessage.To = recipients
           cdoMessage.Subject = subject
           cdoMessage.HtmlBody = body
           on error resume next
           cdoMessage.Send
           if Err.Number <> 0 then
             SendMail = "Email send failed: " & Err.Description & "."
           end if
           set cdoMessage = Nothing
           set cdoConfig = Nothing
           exit function
         end if
    
         'Send email (JMail version).
    
         if mailComp = "JMail" then
           set mailObj = Server.CreateObject("JMail.SMTPMail")
           mailObj.Silent = true
           mailObj.ServerAddress = smtpServer
           mailObj.Sender = fromAddr
           mailObj.ReplyTo = replyTo
           mailObj.Subject = subject
           addrList = Split(recipients, ",")
           for each addr in addrList
             mailObj.AddRecipient Trim(addr)
           next
           mailObj.ContentType = "text/html"
           mailObj.Body = body
           if not mailObj.Execute then
             SendMail = "Email send failed: " & mailObj.ErrorMessage & "."
           end if
           exit function
         end if
    
         'Send email (ASPMail version).
    
         if mailComp = "ASPMail" then
           set mailObj = Server.CreateObject("SMTPsvg.Mailer")
           mailObj.RemoteHost  = smtpServer
           mailObj.FromAddress = fromAddr
           mailObj.ReplyTo = replyTo
           for each addr in Split(recipients, ",")
             mailObj.AddRecipient "", Trim(addr)
           next
           mailObj.Subject = subject
           mailObj.ContentType = "text/html"
           mailObj.BodyText = body
           if not mailObj.SendMail then
             SendMail = "Email send failed: " & mailObj.Response & "."
           end if
           exit function
        end if
    
       end function %>
    Last edited by mazer; 08-29-2005 at 01:15 PM.

  • #2
    Regular Coder
    Join Date
    May 2005
    Location
    Michigan, USA
    Posts
    566
    Thanks
    0
    Thanked 0 Times in 0 Posts
    #1 Please use the CODE brackets to make that look alot nicer and easier to read

    #2 What do you want the page to do?
    Note: I do not test code. I just write it off the top of my head. There might be bugs in it! But if any thing I gave you the overall theory of what you need to accomplish. Also there are plenty of other ways to accomplish this same thing. I just gave one example of it. Other ways might be faster and more efficient.

  • #3
    New Coder
    Join Date
    Aug 2005
    Posts
    40
    Thanks
    0
    Thanked 0 Times in 0 Posts
    I want the information thats being submitted to be sent to one of my e-mail addresses so I can compile a e-mail list for a newsletter.

  • #4
    Regular Coder
    Join Date
    Sep 2004
    Posts
    152
    Thanks
    0
    Thanked 0 Times in 0 Posts
    @mazer,
    You will need to edit these lines of code on your asp page to correspond with your mail server and choice of mail component that you are using to send e-mails.
    Code:
       referers   = Array("www.myweb.com")  not sure what this is
       mailComp   = "ASPMail"  this is the name of the mail component (see function at bottom of your asp page)
       smtpServer = "mail.myweb.com"  this is the dns name of your mail server (you can also use an ip address
       fromAddr   = "mail@myweb.com"  this is the e-mail address of the sender

  • #5
    New Coder
    Join Date
    Aug 2005
    Posts
    40
    Thanks
    0
    Thanked 0 Times in 0 Posts
    is this all I need to do? or do I have to add details to the main script?

  • #6
    New Coder
    Join Date
    Aug 2005
    Posts
    40
    Thanks
    0
    Thanked 0 Times in 0 Posts
    I'm not sure what I'm suppose to do, I put some questions in the code to show what parts I think I have to edit, I'm a total beginner with ASP so forgive me if this is totally wrong.
    Code:
    if mailComp = "ASPMail" then
           set mailObj = Server.CreateObject("SMTPsvg.Mailer")
           mailObj.RemoteHost  = *Do I put my DNS server address here?
           mailObj.FromAddress = *Do I put my from address here
           mailObj.ReplyTo = replyTo
           for each addr in Split(recipients, "*and do I put the send to e-mail here,")
             mailObj.AddRecipient "", Trim(addr)
           next
           mailObj.Subject = subject
           mailObj.ContentType = "text/html"
           mailObj.BodyText = body
           if not mailObj.SendMail then
             SendMail = "Email send failed: " & mailObj.Response & "."
           end if
           exit function
        end if
    
       end function %>
    Last edited by mazer; 08-29-2005 at 04:07 PM.

  • #7
    Regular Coder
    Join Date
    Sep 2004
    Posts
    152
    Thanks
    0
    Thanked 0 Times in 0 Posts
    @mazer,
    No, you don't need to put anything down in the bottom part of the code. You change the variables that I posted above. Those variables are used in the function that you posted the questions on. As far as the receipents, the function is looking for a comma delimited list of receipents from your form with the input name of "_recipients". It does not have to be comma delimited. You can just send to one recipient if you like. But if you wanted to send the same e-mail to a bunch of users, you could pass their e-mail addresses via comma delimited list.


  •  

    Posting Permissions

    • You may not post new threads
    • You may not post replies
    • You may not post attachments
    • You may not edit your posts
    •