【问题标题】:How to check is myMail.Send is true/false如何检查 eMail.Sent 是否为真/假
【发布时间】:2011-12-04 00:52:13
【问题描述】:
    <%
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 & "Their Name: " & VbCrLf & YourName & VbCrLf & VbCrLf
Body = Body & "Their Email: " & VbCrLf & YourEmail & VbCrLf & VbCrLf
Body = Body & "Their Message: " & VbCrLf & YourMessage & VbCrLf & 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!" & VbCrLf & "This is just a brief message to let you know your form was submitted successfully!"& VbCrLf & VbCrLf & "You may reply to this address, but you may not necessarily receive a reply, "& "you should receive a reply in 1-2 business day(s)!"& VbCrLf & "Thank you very much,"& VbCrLf & VbCrLf & "Musical Matters."& VbCrLf & "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,请尽快回答!

提前致谢!

【问题讨论】:

    标签: email asp-classic cdo.message


    【解决方案1】:

    如果电子邮件地址具有有效的语法并且 SMTP 服务器已启动并运行,Send 方法将永远不会抛出错误,即使电子邮件地址不存在。

    没有办法 100% 知道电子邮件是否到达目的地 - 我能想到的一件事是在发送几秒钟后检查(使用 FSO)SMTP 根目录中的 BadMailQueue 文件夹,并且如果它们包含新条目,则表示出现问题。

    但是,当您使用外部邮件服务时,您必须联系他们并寻求一种方法,以便在投递失败时以某种方式获得通知。

    【讨论】:

      【解决方案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
      

      【讨论】:

      • 重定向前需要销毁对象,否则不会发生。
      • 是的,你是对的!我复制了这个问题。我会更新的。谢谢。
      • @AnthonyWJones:我应该澄清一下,它不会及时发生。最终它会被清理干净,但最好是摧毁然后继续前进。这是因为脚本在页面中从上到下运行。
      • @Dee:Response.Redirect 将终止当前脚本,因此在这种情况下脚本不会继续运行到最后。
      • 我可能是错的......但我认为脚本在重定向后不会立即断开连接。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-09
      • 1970-01-01
      • 1970-01-01
      • 2020-12-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多