Преобразование SMTP Mailer в CDOSYS в классическом ASP для контактной формы

В настоящее время я занимаюсь обновлением многих тестовых сайтов на старом сервере, чтобы они не сломались, когда старый сервер будет прекращен в ближайшие пару месяцев. В частности, контактная форма для одного сайта уже не работает. Когда пользователь нажимает на кнопку «Отправить» после заполнения своей информации, он получает следующую ошибку:

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 = "[email protected]"
End If
Mailer.FromAddress = "[email protected]"
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 <[email protected]>"
If request("email") <> "" then
  Mailer.ReplyTo = request("email")
Else
  Mailer.ReplyTo = "[email protected]"
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.Add и на Mailer.AddAddress. Кто-нибудь знает, как я могу обойти эту ошибку и, надеюсь, заставить ее работать? Я никогда раньше не работал с почтовыми серверами, поэтому прошу прощения, если это легко исправить, но я искал последние 3 часа и не могу найти хорошей альтернативы .AddRecipient.


person Jamie    schedule 22.06.2012    source источник


Ответы (2)


Попробуйте выполнить приведенный ниже простейший способ отправки почты с помощью CDO, а затем возьмите из него соответствующие поля и примените к своему скрипту:

Set myMail=CreateObject("CDO.Message")
myMail.Subject="Sending email with CDO"
myMail.From="[email protected]"
myMail.To="[email protected]"
myMail.TextBody="This is a message."
myMail.Send
set myMail=nothing

Как видите, добавить получателя можно так:

myMail.To="[email protected]"

Дополнительные примеры можно увидеть здесь

Надеюсь это поможет.

person 03Usr    schedule 24.06.2012
comment
Так что, если я правильно понимаю, где у меня ReplyTo должно быть .To - person Jamie; 25.06.2012
comment
Reply.To останется, но ваш Mailer.AddRecipient должен стать Mailer.To - person 03Usr; 26.06.2012

Объект CDO.Message просто имеет строковые свойства To, Cc и Bcc, которым вы назначаете стандартный список адресов электронной почты smtp, разделенных точкой с запятой, например:
"Joe Bloggs" <[email protected]>; "Fred Smith" <[email protected]>

person AnthonyWJones    schedule 23.06.2012