【问题标题】:Converting SMTP Mailer to CDOSYS in classic ASP for contact form在经典 ASP 中将 SMTP Mailer 转换为 CDOSYS 以获取联系表单
【发布时间】:2015-02-13 15:50:34
【问题描述】:

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

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 的替代方案。

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      尝试执行以下使用 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

      希望这会有所帮助。

      【讨论】:

      • 所以如果我理解正确的话,我有ReplyTo 应该是.To
      • Reply.To 保留,但您的 Mailer.AddRecipient 应该变为 Mailer.To
      猜你喜欢
      • 1970-01-01
      • 2023-03-28
      • 2014-01-23
      • 1970-01-01
      • 2017-12-23
      • 1970-01-01
      • 2011-12-08
      • 2023-03-14
      • 1970-01-01
      相关资源
      最近更新 更多