CDO.Message .Send导致脚本执行超时

时间:2012-05-07 12:25:50

标签: email asp-classic smtp

我有以下代码:

Set myMailanon = CreateObject("CDO.Message")
myMailanon.MimeFormatted = True

Set myConfanon = Server.CreateObject("CDO.Configuration")
Set objBPanon = myMailanon.AddRelatedBodyPart("http://www.foo.bar/img/logo1.jpg", "http://www.foo.bar/img/logo1.jpg", CdoReferenceTypeName)
objBPanon.Fields.Item("urn:schemas:mailheader:Content-ID") = "<http://www.foo.bar/img/logo1.jpg>" 
objBPanon.Fields.Update 
ConfURLanon = "http://schemas.microsoft.com/cdo/configuration/"

with myConfanon        
  .Fields.Item(ConfURLanon & "sendusing") = 2        
  .Fields.Item(ConfURLanon & "smtpserver") = "smtp.foo.bar"        
  .Fields.Item(ConfURLanon & "smtpserverport") = 25     
  .Fields.Item(ConfURLanon & "smtpusessl") = false
  .Fields.Item(ConfURLanon & "smtpauthenticate") = 1
  .Fields.Item(ConfURLanon & "sendusername") = "foo@bar.com"
  .Fields.Item(ConfURLanon & "sendpassword") = "foobarpass"
  .Fields.Update
end with

with myMailanon
  .Subject='Foo!! Bar!!'
  .From='Foo!! Bar!! <foo@bar.com>'      
  .To='foo@bar.com,bar@foo.com'      
  txt="This is foo... bar... text... SPARTAAAAAAAAA"
  .HTMLBody = txt
  Set .Configuration = myConfanon   
  On Error Resume Next 
  .Send      
end with

问题是,此代码运行100次,将运行30次并失败70.随机。 并且&#34;失败&#34;我的意思是它会导致脚本执行超时。

在逐行评论之后,我得出的结论是错误来自&#34;。发送&#34;。 但为什么?有什么想法吗?

此致

1 个答案:

答案 0 :(得分:1)

代码没有任何问题(尽管CdoReferenceTypeName看起来有点怀疑,但这可能只是糟糕的变量命名)。可能只是SMTP服务器正忙,因此需要一段时间来处理发送。

您可以检查在IIS管理器中为ASP功能指定的脚本超时值。默认情况下,它应该是90秒,但由于某种原因可能已设置为低值。

您可以通过在代码中指定脚本来增加脚本的时间。

Server.ScriptTimeout = 300

哪个会给你的脚本5分钟。这可能会掩盖您的Web服务器和SMTP服务器之间的某些设置问题,但它可能会提高成功率。除了你可能得到相同的结果,但70%的失败需要更长的时间。

无论原因是什么,我都不认为你的代码。

相关问题