ColdFusion邮件队列停止处理

Ben*_*oom 13 coldfusion administration

我们的CF服务器偶尔会停止处理邮件.这是有问题的,因为我们的许多客户都依赖它.

我们在网上发现了在无法投递的文件夹中提到零字节文件的建议,因此我创建了一个每三分钟删除一次的任务.但是,再次发生了停工.

我正在寻找诊断和解决此问题的建议.

  • CF 8标准
  • WIN2K3

添加:

  • 队列失败时邮件日志中没有错误
  • 由于我们发送了大量邮件,因此我们没有尝试在不使用队列的情况下运行此操作

新增2:

  • 它对spool文件夹中的任何文件似乎都不是问题.当我们重新启动邮件队列时,它们似乎都正确处理.

补充3:

  • 我们没有使用附件.

Ben*_*oom 12

我们最终做了什么:

我写了两个预定的任务.第一个检查队列文件夹中是否有任何消息早于n分钟(当前设置为30).第二个在低使用率期间每晚重置队列.

不幸的是,我们从来没有真正发现为什么队列会脱轨,但它似乎只在我们使用Exchange时发生 - 我们尝试过的其他邮件服务器没有这个问题.

编辑: 我被要求发布我的代码,所以这是在找到旧邮件时重新启动的代码:

<cfdirectory action="list" directory="c:\coldfusion8\mail\spool\" name="spool" sort="datelastmodified">
<cfset restart = 0>
<cfif datediff('n', spool.datelastmodified, now()) gt 30>
    <cfset restart = 1>
</cfif>
<cfif restart>
    <cfset sFactory = CreateObject("java","coldfusion.server.ServiceFactory")>
    <cfset MailSpoolService = sFactory.mailSpoolService>
    <cfset MailSpoolService.stop()>
    <cfset MailSpoolService.start()>
</cfif>
Run Code Online (Sandbox Code Playgroud)


Ada*_*tle 5

由于我们发送了大量邮件,因此我们没有尝试在不使用队列的情况下运行此操作

无论如何,你试过关掉假脱机吗?我已经看到邮件在半秒钟内以500-600条消息的速度发送,这就是一种糟糕的服务器.标准页面超时为60秒,在页面超时之前,您可以发送大约72,000封电子邮件.你一次发送超过72,000个?

我在CFMail之前使用的另一种选择是快速构建自定义假脱机程序.而不是动态发送电子邮件,将它们保存到数据库表.然后设置一个预定作业以发送几百条消息,并在几分钟后重新安排自己,直到该表为空.

我们安排这项工作每天运行一次; 如果表不为空,它可以重新安排自己在几分钟内再次运行.从来没有遇到过问题.