2013-04-18 3 views
1

При отправке электронного письма на веб-сайте я сталкиваюсь с проблемой при отправке формы. Форма может быть найдена в следующем месте.Отправить форму не работает в asp

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

Я использую объект SMTPsvg.Mailer для отправки электронной почты. Поддерживается ли этот объект на сервере, и если да, можем ли мы использовать localhost в свойстве удаленного хоста. Я также пробовал CDONTS.New | MailCDO.Message, но они также не работают нормально. Пожалуйста, обратитесь в отдел поддержки хостинговой компании по этому вопросу.

Этот код служит для отправки электронного письма.

Set 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 = "[email protected]" 
Mailer.AddRecipient "[email protected]", "[email protected]" 
Mailer.Subject = "CONTACT US Request" 
Mailer.BodyText = Body 

SendMail = Mailer.SendMail 

я использую тот же код для другого веб-сайта его работы идеально, но это один не является и форма контакта Оба веб-сайта отправив сообщение на тот же адрес ,

+0

Вы пробовали CDOSYS? SMTPsvg.Mailer является сторонним компонентом - он по умолчанию не установлен на сервере Windows. CDONTS был стандартным для NT-серверов, но теперь он был заменен CDOSYS – John

ответ

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 <[email protected]>; Sue <[email protected]>" 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 
%> 
0

Проблема может быть эта линия ..

Mailer.RemoteHost = "localhost" 

Если локальный не настроен для отправки/реле для этого пользователя/домена будет сбой без указания каких-либо признаков. Если у вас уже настроен почтовый сервер для вашего сайта, попробуйте установить его как RemoteHost. Вы можете использовать alias.domain или IP-номер.

Смежные вопросы