提交表单不适用于asp

时间:2013-04-18 14:52:00

标签: asp-classic

在网站上发送电子邮件时,我在提交表单时遇到问题。表格可在以下位置找到。

http://www.someone.com/medicalights/contact.htm

我正在使用SMTPsvg.Mailer对象发送电子邮件。服务器是否支持此对象?如果是,我们是否可以在远程主机属性中使用localhost。我也试过CDONTS.New | MailCDO.Message但这些也不能正常工作。请向托管公司的支持部门询问此问题。

以下代码用于发送电子邮件。

设置Mailer = Server.CreateObject(“SMTPsvg.Mailer”)

Mailer.RemoteHost = "localhost" 
Mailer.ReturnReceipt = false
Mailer.ConfirmRead = false
Mailer.Priority = 1
Mailer.Urgent = false
Mailer.Timeout = 30

Mailer.FromName = "someone.com"
Mailer.FromAddress = "info@someone.com"
Mailer.AddRecipient "que33@gmail.com", "que33@gmail.com"
Mailer.Subject = "CONTACT US Request"
Mailer.BodyText = Body

SendMail = Mailer.SendMail

我在其他网站上使用相同的代码,但其工作完美,但这不是,而且两个网站的联系表格都会向同一地址发送电子邮件。

2 个答案:

答案 0 :(得分:0)

表单链接不起作用。我希望看到您的表单的HTML,以及读取提交的数据的ASP代码。我也同意约翰的建议,你使用CDOSYS代码发送邮件。这可能是你的问题。以下是我为CMS创建的功能,以便在页面需要发送电子邮件时使用:

<%
function email(s_from,s_reply_to,s_recipients,s_bcc,s_subject,s_msg,s_type,s_msg_error_add,s_remote_host)

    if (s_msg_error_add<>"") then s_msg_error_add = "<hr>" & vbCrLf & s_msg_error_add
    if (s_remote_host="default") then s_remote_host = application("s_mail_server")
    if (s_remote_host="") then s_remote_host = "localhost"
    s_remote_host=lcase(s_remote_host)

    's_recipients looks like "Scott <scott@domain.net>; Sue <andy@domain.net>" etc

    s_from = replace(s_from,","," ",1,-1,1)
    s_from = replace(s_from,"  "," ",1,-1,1)
    s_from = replace(s_from,"[","<",1,-1,1)
    s_from = replace(s_from,"]",">",1,-1,1)

    if (s_reply_to<>"") then
        s_reply_to = replace(s_reply_to,","," ",1,-1,1)
        s_reply_to = replace(s_reply_to,"  "," ",1,-1,1)
        s_reply_to = replace(s_reply_to,"[","<",1,-1,1)
        s_reply_to = replace(s_reply_to,"]",">",1,-1,1)
    end if

    s_recipients = replace(s_recipients,",",";",1,-1,1)
    s_recipients = replace(s_recipients,"  "," ",1,-1,1)
    s_recipients = replace(s_recipients,"[","<",1,-1,1)
    s_recipients = replace(s_recipients,"]",">",1,-1,1)

    if (s_bcc<>"") then 
        s_bcc = replace(s_bcc,","," ",1,-1,1)
        s_bcc = replace(s_bcc,"  "," ",1,-1,1)
        s_bcc = replace(s_bcc,"[","<",1,-1,1)
        s_bcc = replace(s_bcc,"]",">",1,-1,1)
    end if

    err.clear

    Dim MailerConfig
    Dim Mailer
    Dim strRet
    dim sch

    strRet = ""
    sch = "http://schemas.microsoft.com/cdo/configuration/"

    Set MailerConfig = CreateObject("CDO.Configuration")
    Set Mailer = CreateObject("CDO.Message")

    With MailerConfig.Fields
        '.Item(sch & "sendusing") = 2 'send using port - if err then this is really "SendUsingMethod"
        '.Item(sch & "sendusingmethod") = 2 'send using port - if err then this is really "SendUsingMethod"
        .Item(sch & "smtpconnectiontimeout") = 900
        '.Item(sch & "smtpauthenticate") = 1 'use basic (clear-text) authentication
        .Item(sch & "smtpserver") = s_remote_host
        '.Item(sch & "smtpserverport") = 25
        '.Item(sch & "sendusername") = SMAUTHUSER
        '.Item(sch & "sendpassword") = SMAUTHPASS
        .Update
    End With
    Mailer.Configuration = MailerConfig

    'Mailer.Fields(cdoImportance) = 1
    'Mailer.Fields("urn:schemas:mailheader:X-MSMail-Priority") = 1
    'Mailer.Fields("urn:schemas:mailheader:X-Mailer") = ""
    'Mailer.Fields.Update

    '-- Set the Mail Properties

    'on error resume next

    Mailer.From = s_from
    Mailer.To = s_recipients
    if (s_reply_to<>"" and s_reply_to<>"na") then Mailer.ReplyTo = s_reply_to

    b_redirect=false

    if (err.number<>0 and err.number<>13) then
        session("msg") = "Error in i_fn_email_cdo.asp line 72, Error: " & err.number & "<br>" & err.description
        if (b_redirect) then response.redirect ("error_report.asp?send_mail=yes")
    end if

    if (s_bcc<>"" AND s_bcc<>"na" AND s_bcc<>"n/a") then Mailer.BCC = s_bcc

    if (err.number<>0 and err.number<>13) then
        session("msg") = "Error in i_fn_email_cdo.asp line 79, Error: " & err.number & "<br>" & err.description
        if (b_redirect) then response.redirect ("error_report.asp?send_mail=yes")
    end if

    Mailer.Subject = s_subject

    if (err.number<>0 and err.number<>13) then
        session("msg") = "Error in i_fn_email_cdo.asp line 86, Error: " & err.number & "<br>" & err.description
        if (b_redirect) then response.redirect ("error_report.asp?send_mail=yes")
    end if

    if (s_type="html") then
        Mailer.AutoGenerateTextBody = True
        s_msg = replace(s_msg,vbCrLf,"<br>",1,-1,1)
    else
        Mailer.AutoGenerateTextBody = False         
    end if

    if (err.number<>0 and err.number<>13) then
        session("msg") = "Error in i_fn_email_cdo.asp line 103, Error: " & err.number & "<br>" & err.description
        if (b_redirect) then response.redirect ("error_report.asp?send_mail=yes")
    end if

    Mailer.MimeFormatted = False

    if (err.number<>0 and err.number<>13) then
        session("msg") = "Error in i_fn_email_cdo.asp line 110, Error: " & err.number & "<br>" & err.description
        if (b_redirect) then response.redirect ("error_report.asp?send_mail=yes")
    end if

    if (s_type = "text") then
        Mailer.TextBody = fn_dirty(s_msg)
    else
        's_msg_html = replace(s_msg,vbCrLf,"<br>",1,-1,1)
        s_msg_html = s_msg
        Mailer.HTMLBody = fn_dirty(s_msg_html)
    end if

    if (err.number<>0 and err.number<>13) then
        session("msg") = "Error in i_fn_email_cdo.asp line 123, Error: " & err.number & "<br>" & err.description
        if (b_redirect) then response.redirect ("error_report.asp?send_mail=yes")
    end if

    '-- Fire off the email message

    Mailer.Send

    if (err.number<>0 and err.number<>13) then
        Select Case err.Number
            Case -2147220973
                strRet = " Failure to Send Report Message - Server Not Found" & vbCrLf & " Error: " & err.Number & " - " &  err.Description
            Case -2147220975
                strRet = " Failure to Send Report Message - Server Authentication Failed" & vbCrLf & " Error: " & err.Number & " - " & err.Description
            Case Else
                strRet = " Failure to Send Report Message - Error: " & err.Number & " - " & err.Description
        End Select

        msg = "<br>Error in i_fn_email_cdo.asp: " & strRet & "<br><br>"

        msg = msg & "remote host = " & s_remote_host & "<br>"
        s_from = replace(s_from,"<","[",1,-1,1)
        s_from = replace(s_from,">","]",1,-1,1)
        s_reply_to = replace(s_reply_to,"<","]",1,-1,1)
        s_reply_to = replace(s_reply_to,">","[",1,-1,1)
        s_recipients = replace(s_recipients,"<","[",1,-1,1)
        s_recipients = replace(s_recipients,">","]",1,-1,1)
        s_bcc = replace(s_bcc,"<","[",1,-1,1)
        s_bcc = replace(s_bcc,">","]",1,-1,1)

        msg = msg & "from = " & s_from & "<br>"
        msg = msg & "to = " & s_recipients & "<br>"
        msg = msg & "subject = " & s_subject & "<br>"
        msg = msg & "recipients = " & s_recipients & "<br><br>"

        if (s_type = "text") then
            msg = msg & s_msg
        else
            msg = msg & s_msg_html
        end if
        msg = msg & "<br>"      
        msg = msg & s_msg_error_add
        session("msg") = msg
        Set Mailer = Nothing
        set MailerConfig = nothing

        if (b_redirect) then response.redirect ("error_report.asp?send_mail=yes")
    end if

    Set Mailer = Nothing
    set MailerConfig = nothing

    email = true

end function

Function fn_dirty(FixWhat)
    if (isnull(FixWhat) or FixWhat="") then
        FixWhat=""
    else
        FixWhat=trim(FixWhat)
        FixWhat=replace(FixWhat,"<ahref","<a href",1,-1,1)
        FixWhat=replace(FixWhat,"<spanclass","<span class",1,-1,1)
        FixWhat=replace(FixWhat,"  "," ",1,-1,1)
        FixWhat=replace(FixWhat,"&#146;","'",1,-1,1)
        FixWhat=replace(FixWhat,"&apos;","'",1,-1,1)
        FixWhat=replace(FixWhat,"%27","'",1,-1,1)
        FixWhat=replace(FixWhat,"&#39;","'",1,-1,1)
        FixWhat=replace(FixWhat,"&#146;","'",1,-1,1)
        FixWhat=replace(FixWhat,"&#47;","/",1,-1,1)
        FixWhat=replace(FixWhat,"''''","'''",1,-1,1)
        FixWhat=replace(FixWhat,"&#34;",chr(34),1,-1,1)
        FixWhat=replace(FixWhat,"%22",chr(34),1,-1,1)
        FixWhat=replace(FixWhat,chr(13) & chr(10),"",1,-1,1)
        FixWhat=replace(FixWhat,"title=","alt=",1,-1,1)
        FixWhat=replace(FixWhat,"src=" & chr(34) & chr(32),"",1,-1,1)
        FixWhat=replace(FixWhat,"src=" & chr(34) & "/images","src=" & chr(34) & "images",1,-1,1)
        FixWhat=replace(FixWhat,"background=" & chr(34) & chr(32),"background=" & chr(34) & chr(34) & chr(32),1,-1,1)
        FixWhat=replace(FixWhat,"x=" & chr(34) & chr(32)," ",1,-1,1)
        FixWhat=replace(FixWhat,"&amp;","&",1,-1,1)
        FixWhat=replace(FixWhat,"amp;","&",1,-1,1)
        FixWhat=replace(FixWhat,"&amp;","&",1,-1,1)
        FixWhat=replace(FixWhat,"&&","&",1,-1,1)
        FixWhat=replace(FixWhat,"&&","&",1,-1,1)
        FixWhat=replace(FixWhat,"&lt;","<",1,-1,1)      
        FixWhat=replace(FixWhat,"&gt;",">",1,-1,1)
        FixWhat=replace(FixWhat,"//<![CDATA[","",1,-1,1)
        FixWhat=replace(FixWhat,"//]]","",1,-1,1)
        FixWhat=replace(FixWhat,"<TABLE","<table",1,-1,1)       
        FixWhat=replace(FixWhat,"<TBODY>","<tbody>",1,-1,1)
        FixWhat=replace(FixWhat,"<TR","<tr",1,-1,1)             
        FixWhat=replace(FixWhat,"<TD","<td",1,-1,1) 
        FixWhat=replace(FixWhat,"</TR>","</tr>",1,-1,1)             
        FixWhat=replace(FixWhat,"</TD>","</td>",1,-1,1) 

        FixWhat=replace(FixWhat,"<html><br>","<html>",1,-1,1)
        FixWhat=replace(FixWhat,"<head><br>","<head>",1,-1,1)       
        FixWhat=replace(FixWhat,"<body><br>","<body>",1,-1,1)
        FixWhat=replace(FixWhat,"<br><tbody>","<tbody>",1,-1,1)
        FixWhat=replace(FixWhat,"<tbody><br>","<tbody>",1,-1,1)
        FixWhat=replace(FixWhat,"<br><tr>","<tr>",1,-1,1)
        FixWhat=replace(FixWhat,"<tr><br>","<tr>",1,-1,1)
        FixWhat=replace(FixWhat,"<br><td","<td",1,-1,1)
        FixWhat=replace(FixWhat,"<br></html>","</html>",1,-1,1)
    end if
    fn_dirty=FixWhat
End Function
%>

答案 1 :(得分:0)

问题可能是这一行......

Mailer.RemoteHost = "localhost"

如果localhost未配置为该用户/域发送/中继,则它将失败而不给出任何指示。如果您已为youu站点配置了邮件服务器,请尝试将其设置为RemoteHost。您可以使用alias.domain或IP号。