首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >传统ASP网站发送邮件超时(IIS6,默认SMTP服务器)

传统ASP网站发送邮件超时(IIS6,默认SMTP服务器)
EN

Stack Overflow用户
提问于 2011-07-23 10:46:43
回答 2查看 1.6K关注 0票数 2

我刚刚移动了一个客户的经典ASP网站到他们自己的VPS服务器(Windows2003,32位,IIS6,虚拟SMTP服务器),大约12小时后,网站开始失败,每当它试图发送电子邮件(CDO.Message)。

发送电子邮件的任何脚本都花了很长时间才返回错误: Active Server Pages,ASP 0113,script timed out。标准超时已就位。奇怪的是,自定义错误页面使用相同的电子邮件发送方法和设置(实际上是相同的功能)向我发送错误,却能够向我发送错误通知。

我需要让网站运行起来,所以我停止/启动了SMTP服务器,但没有帮助,然后重启了IIS,它立即解决了这个问题。

我担心这种情况会再次发生。有什么建议可以导致这个问题,或者默认的SMTP服务器是否需要一些额外的设置来处理相当大的网站?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-13 12:36:57

后来,我发现问题不在于电子邮件的实际发送,而在于我是通过从另一个ASP页面(通过XML对象)检索HTML来为电子邮件生成HTML正文的。

我尝试了各种方法来解决这个问题,包括切换邮件组件(到Jmail)和使用不同版本的XML对象,但问题仍然间歇性地出现。

最后,我更改了代码以生成电子邮件正文的HTML,而不是调用另一个ASP页面并读取它的响应。

消除对XML对象的使用似乎已经解决了问题,但从来没有找到原因。

票数 0
EN

Stack Overflow用户

发布于 2012-04-13 08:24:03

由于传统的ASP代码必须调用基于COM的外部组件才能发送电子邮件(这就是你在创建CDO消息时所做的事情-任何时候你在你的asp代码中有一个CreateObject调用,也就是COM),如果外部组件需要很长时间来响应,asp代码将看起来挂起。例如,大多数SMTP组件将同步尝试发送消息到SMTP服务器,阻止您的asp代码执行,直到发送电子邮件消息。这在非常繁忙的SMTP服务器上成为一个问题,因为它们对连接请求和SMTP命令的响应可能非常慢。另一种糟糕的情况是,许多ISP的/主机试图通过故意使他们的SMTP服务器响应缓慢来限制您发送电子邮件的速度。更糟糕的是,一些主机甚至会在一段设定的时间内使后续连接变得越来越慢。这会严重影响站点性能,因为在SMTP发送过程中,您的页面代码通常会被阻止。

最佳解决方案是使用不强制执行此类限制措施的主机或SMTP服务器。除此之外,有一种方法可以通过使用消息队列来解决这个问题。如果您使用的是CDO,这意味着您必须在IIS web服务器上配置Microsoft SMTP服务才能使用。即使IIS机器上有其他SMTP软件,也可以正确配置。一旦Microsoft SMTP服务在您的IIS服务器上运行,它将能够在服务器上对电子邮件进行排队,并将它们异步转发到配置的SMTP服务器上,以响应您的应用程序/页面代码。在配置Microsoft SMTP服务时,必须定义它所称的“智能主机”。这只是您要将出站电子邮件路由到的SMTP服务器,以便在您的网络上传递。

配置完成后,您只需更改使用CDO对电子邮件消息进行排队的代码,而不是尝试发送它。在您的CDO代码中,应该有一行设置CDO字段值,如下所示:

代码语言:javascript
运行
复制
objFlds.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 

您希望将"sendusing“字段的值从2更改为1。这些是cdoSendUsingPort (2)和cdoSendUsingPickup (1)枚举的枚举值。执行此操作后,您还可以删除"smtpserver“和"smtpserverport”字段,因为无论如何配置Microsoft SMTP服务,这些字段都会被覆盖。一旦您这样做,您的asp代码将快速生成电子邮件消息,它将在IIS服务器的邮件拾取文件夹中排队。因此,您的应用程序/页面代码将运行得更快。传出的电子邮件可能会累积在队列文件夹中,因为SMTP服务在后台缓慢地传递它们。它不会使电子邮件发送更快,但它确实可以防止您的代码由于缓慢的SMTP服务器而阻塞。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6797928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档