#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. Я могу ошибаться … но я не думаю, что соединение немедленно прерывается скриптом при перенаправлении.