将SMTP邮件程序转换为经典ASP中的CDOSYS以获取联系表单

时间:2012-06-22 19:11:29

标签: asp-classic smtp contact-form cdo.message

我目前正在更新旧服务器上的许多测试站点,以便在旧服务器在接下来的几个月中停止时它们不会中断。特别是一个站点的联系表格已经打破。当用户在填写信息后点击提交时,会出现以下错误:

Server object error 'ASP 0177 : 800401f3'

Server.CreateObject Failed

/contactsubmit.asp, line 79

800401f3


Set Mailer = Server.CreateObject("SMTPsvg.Mailer")
Mailer.FromName = "Web Visitor"
If request("email") <> "" then
  Mailer.replyto = request("email")
Else
  Mailer.replyto = "noEmailEntered@domain.com"
End If
Mailer.FromAddress = "my@email.com"
Mailer.RemoteHost = "hostserver"
If TempTest = TRUE then
Else
  Mailer.AddRecipient siteOwner, ContactEmail
  If ContactCC <> "" then
    Mailer.AddCC siteOwner, ContactCC
  End If
End If
If DesignerEmail <> "" then
    Mailer.AddBCC DesignerEmail, DesignerEmail
End If
Mailer.Subject = siteOwner & " Contact Form"
Mailer.ContentType = "text/html"
Mailer.BodyText = strBody
If Mailer.SendMail then
  response.redirect "contact.asp?sent=yes"
Else
  response.redirect "contact.asp?sent=no"
End If

我被告知SMTP不再是电子邮件需要发送的方式,所以我尝试将其全部更改为CDOSYS。但有趣的是,我使用相同的SMTP代码测试了此服务器上有更多的网站。 使用CDOSYS进行更改:

Set Mailer = Server.CreateObject("CDO.Message")
Mailer.From = "Web Visitor <my@email.com>"
If request("email") <> "" then
  Mailer.ReplyTo = request("email")
Else
  Mailer.ReplyTo = "noEmailEntered@domain.com"
End If
Mailer.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "hostserver"
If TempTest = TRUE then
Else
  Mailer.AddRecipient siteOwner, ContactEmail
  If ContactCC <> "" then
    Mailer.Cc siteOwner, ContactCC
  End If
End If
If DesignerEmail <> "" then
    Mailer.Bcc DesignerEmail, DesignerEmail
End If
Mailer.Subject = siteOwner & " Contact Form"
Mailer.HTMLBody = strBody
If Mailer.Send then
  response.redirect "contact.asp?sent=yes"
Else
  response.redirect "contact.asp?sent=no"
End If

但现在我收到了这个错误:

Microsoft VBScript runtime error '800a01b6'

Object doesn't support this property or method: 'Mailer.AddRecipient'

/contactsubmit.asp, line 89

我尝试将其更改为Mailer.AddMailer.AddAddress但没有运气。有谁知道我如何解决这个错误,并希望这个工作?我之前从未使用过邮件服务器,所以如果这是一个简单的解决方案,我道歉,但我搜索了过去3个小时,并且找不到.AddRecipient的替代品。

2 个答案:

答案 0 :(得分:1)

CDO.Message对象只具有ToCcBcc的字符串属性,您可以为其分配标准的以分号分隔的smtp电子邮件地址列表,例如:<登记/> "Joe Bloggs" <joeB@somecompany.com>; "Fred Smith" <fSmith@smiths.co.uk>

答案 1 :(得分:0)

尝试执行以下最简单的使用CDO发送邮件的方式,然后从中获取相关字段并应用于您的脚本:

Set myMail=CreateObject("CDO.Message")
myMail.Subject="Sending email with CDO"
myMail.From="mymail@mydomain.com"
myMail.To="someone@somedomain.com"
myMail.TextBody="This is a message."
myMail.Send
set myMail=nothing

正如您所看到的,添加收件人的方式如下:

myMail.To="someone@somedomain.com"

您可以看到更多示例here

希望这有帮助。