Как проверить — это myMail.Отправить true / false

#email #asp-classic #cdo.message

#Адрес электронной почты #asp-классический #cdo.message

Вопрос:

     <%
Dim sent
Dim YourName
Dim YourEmail
Dim YourMessage
Set myMail2=CreateObject("CDO.Message")
YourName = Trim(Request.Form("Name")) 
YourEmail = Trim(Request.Form("Email")) 
YourMessage = Trim(Request.Form("Message")) 

Dim Body
Dim body2
Body = Body amp; "Their Name: " amp; VbCrLf amp; YourName amp; VbCrLf amp; VbCrLf
Body = Body amp; "Their Email: " amp; VbCrLf amp; YourEmail amp; VbCrLf amp; VbCrLf
Body = Body amp; "Their Message: " amp; VbCrLf amp; YourMessage amp; VbCrLf amp; VbCrLf

Set myMail=CreateObject("CDO.Message")
myMail.Subject="A New Enquiry!"
myMail.From="admin@musicalmatters.co.uk"
myMail.To="james@devine.eu"
myMail.TextBody=Body
myMail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing")=2
'Name or IP of remote SMTP server
myMail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver")="smtp.1and1.com"
'Server port
myMail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport")=25
myMail.Configuration.Fields.Update
myMail.Send
set myMail=nothing



body2="Thank you for contacting us!" amp; VbCrLf amp; "This is just a brief message to let you know your form was submitted successfully!"amp; VbCrLf amp; VbCrLf amp; "You may reply to this address, but you may not necessarily receive a reply, "amp; "you should receive a reply in 1-2 business day(s)!"amp; VbCrLf amp; "Thank you very much,"amp; VbCrLf amp; VbCrLf amp; "Musical Matters."amp; VbCrLf amp; "admin@musicalmatters.co.uk"

Set myMail2=CreateObject("CDO.Message")
myMail2.Subject="Thanks for Contacting Us!"
myMail2.From="admin@musicalmatters.co.uk"
myMail2.To=YourEmail
myMail2.TextBody=body2 

myMail2.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing")=2
'Name or IP of remote SMTP server
myMail2.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver")="smtp.1and1.com"
'Server port
myMail2.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport")=25
myMail2.Configuration.Fields.Update
myMail2.Send

If myMail2.Send="" Then 
Response.Redirect("http://www.musicalmatters.co.uk/success.htm")
set myMail2=nothing

Else
Response.Redirect("http://www.musicalmatters.co.uk/error.htm")
set myMail2=nothing
End If
  

Проблема с моим скриптом asp заключается в том, что мне нужно проверить, были ли отправлены электронные письма или нет, и перенаправить их на страницу ошибки или успеха в зависимости от результата.

     If myMail2.Send="" Then 
Response.Redirect("http://www.musicalmatters.co.uk/success.htm")
set myMail2=nothing

Else
Response.Redirect("http://www.musicalmatters.co.uk/error.htm")
set myMail2=nothing
End If
  

в приведенном выше коде mymail2.Send=»» поскольку я что-то тестировал, я знаю, что должен изменить значение на true или false, пожалуйста, поспешите с вашими ответами!

Заранее спасибо!

Ответ №1:

Если адрес электронной почты имеет допустимый синтаксис, а SMTP-сервер запущен и работает, Send метод никогда не выдаст ошибку, даже если адрес электронной почты не существует.

Невозможно узнать на 100%, дошло ли электронное письмо до адресата — я могу подумать об одном: проверить (с помощью FSO) папки BadMail и Queue в корне SMTP через несколько секунд после отправки, и если они содержат новую запись, это означает, что что-то пошло не так.

Однако, поскольку вы используете внешнюю почтовую службу, вам придется связаться с ними и попросить способ каким-то образом получать уведомления о сбое доставки.

Ответ №2:

Похоже, требуется использовать оператор On Error.

 On Error Resume Next
myMail2.Send
If Err.Number = 0 Then
    set myMail2 = Nothing
    Response.Redirect("http://www.musicalmatters.co.uk/success.htm")
Else
    set myMail2 = Nothing
    Response.Redirect("http://www.musicalmatters.co.uk/error.htm")
End If
  

Комментарии:

1. вам нужно уничтожить объект перед перенаправлением, иначе этого не произойдет.

2. Да, вы правы! Я скопировал вопрос. Я обновлю. Спасибо.

3. @AnthonyWJones: Я должен уточнить, это не произойдет своевременно. В конечном итоге он будет очищен, но лучше уничтожить, а затем двигаться дальше. Это потому, что скрипты выполняются сверху вниз на странице.

4. @Dee: A Response.Redirect завершит текущий скрипт, поэтому в этом случае скрипт не будет выполняться до конца.

5. Я могу ошибаться … но я не думаю, что соединение немедленно прерывается скриптом при перенаправлении.