ASP / CDOSYS - Performance issue

Discussion in 'ASP' started by worldofrugs, May 1, 2008.

  1. worldofrugs

    worldofrugs New Member

    May 1, 2008
    Likes Received:
    Trophy Points:
    I'm hosted on a shared server with I have several forms on my website that all use the same ASP file to send out my forms..
    It worked fine for a long time, but now the forms send to my e-mail arrive after a few hours instead of instantly.
    Calling Godaddy did not help as they stated all is working fine (no delays) on their end and refuse to help with custom scripts..

    My emails are also hosted by godaddy like my website.

    Hopefully someone here can have a look at my code and see why I might have such huge delays?
    The delays seem to happen when using CDOSYS... I'm also setting up a shopping cart (ProductCart) and when using the CDOSYS function for their email script it has also a huge delay, while setting it to CDO it arrives within minutes...
    I do not get any errors, all seems to go fine and mail does arrive after a few hours.

    Here's the code (personal info marked out of cos):
    option explicit
    dim pde : set pde = createobject("scripting.dictionary")
    pde.add "%mailing%", ""
    pde.add "%webmaster%", ""
    pde.add "%info%", ""
    pde.add "%email%", ""
    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
    set f = nothing
    set fso = nothing
    getTextFromFile = txt
    end function
    dim redir, mailto, email, 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")
    email = request.form("email")
    if email = "" then email = pde("%email%")
    subject = request.form("subject")
    message = request.form("message")
    template = request.form("template")
    testmode = lcase(request.form("testmode"))="no"
    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 = mailto
    msg.from = email
    if len(cc) > 0 then = cc
    if len(bcc) > 0 then msg.bcc = bcc
    if not usetemplate then
    body = body & message & vbcrlf & vbcrlf
    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 <> "email" then body = body & item & ": " & request.form(item) & vbcrlf & vbcrlf
    body = replace(body, "[$" & item & "$]", replace(request.form(item),vbcrlf,"<br>"))
    end if
    end select
    if usetemplate then 'remove any leftover placeholders
    dim rx : set rx = new regexp
    rx.pattern = "\[\$.*\$\]" = true
    body = rx.replace(body, "")
    end if
    if usetemplate and lcase(request.form("html")) = "yes" then
    msg.htmlbody = body
    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: " & email & 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
    response.write "<html><head><title>Sendmail.asp Test Mode</title></head><body><pre>" & vbcrlf
    response.write "Mail to: " & mailto & vbcrlf
    response.write "Mail from: " & email & 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
    response.redirect redir
    end if
    set msg = nothing
    I also tried adding these lines (and combinations) without any better results:

    msg.Configuration.Fields.Item("") = 2
    msg.Configuration.Fields.Item("") = ""
    msg.Configuration.Fields.Item("") = 3535
    msg.Configuration.Fields.Item("") =1
    msg.Configuration.Fields.Item("") = ""
    msg.Configuration.Fields.Item ("") = "abc1234"
    Here's a sample of what's used in the forms:
     <form action="/sendmail_cdo.asp" method="post" name="SampleForm" id="SampleForm">
    <input type="hidden" name="redirect" value="">
    <input name="mailto" type="hidden" id="mailto" value="%webmaster%">
    <input name="subject" type="hidden" id="subject" value="Website Form Submission: Sample form from website">
    In the html template used with the form, I use [$form_fieldname$] to display the values entered in the forms.

    Anyone any ideas why there might be this huge delay and/or does anyone know how to change this to CDO instead of CDOSYS (as this worked for the shopping cart)?

Share This Page

  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice