【问题标题】:CDO.Message .Send causes script execution timeoutCDO.Message .Send 导致脚本执行超时
【发布时间】:2012-05-08 03:58:55
【问题描述】:

我有以下代码:

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 次。随机。 “失败”是指它会导致脚本执行超时。

逐行注释后,我得出的结论是错误来自“.Send”。 但为什么?有什么想法吗?

问候

【问题讨论】:

  • 可能是外部资产之一未加载。比如foo.bar/img/logo1.jpg,或者SMTP服务器繁忙或不可用。
  • 我还没有提到资产加载,我会确保在我的代码中注释所有这些。关于 SMTP 是总线,你是什么意思?就像 CDO 尝试连接 SMTP 并超时?如果是这样,那应该用连接超时来解决,对吧?

标签: email asp-classic smtp


【解决方案1】:

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

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

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

Server.ScriptTimeout = 300

这将使您的脚本有 5 分钟的时间。这很可能掩盖了您的 Web 服务器和 SMTP 服务器之间的一些设置问题,但它可能会提高成功率。否则你可能会得到相同的结果,但 70% 的失败需要更长的时间才能发生。

不管是什么原因,我认为不是你的代码。

【讨论】:

  • 在移动整个网站,更改网络服务器等之后...我发现问题是CDO.Message无法连接到任何服务器。确切的代码错误是:传输无法连接到服务器。 (错误'80040213')。我尝试了几个帐户,其中一些在我的电子邮件服务器中,其中一些在它之外(我什至尝试使用 gmail 帐户),它们都不起作用。就像 CDO.Message 拒绝连接到任何服务器一样。此外,我的服务器(网络托管在我的服务器上)和 1and1 服务器上都发生了这种情况。有什么想法吗?
猜你喜欢
  • 1970-01-01
  • 2015-11-05
  • 2016-06-30
  • 1970-01-01
  • 1970-01-01
  • 2018-06-07
  • 2011-06-15
  • 2014-05-20
  • 1970-01-01
相关资源
最近更新 更多