我断断续续处理这个问题已经好多年了,可以追溯到 CF 5 和 6。
突然之间,Coldfusion 停止发送电子邮件,而邮件却一直在队列中堆积。
要重新启动服务,我可以重新启动 coldfusion 或运行以下代码:
<cfset sFactory = CreateObject("java","coldfusion.server.ServiceFactory")>
<cfset MailSpoolService = sFactory.mailSpoolService>
<cfset MailSpoolService.start()>
上面的解决方案是 stackoverflow 上提到的修复: https://stackoverflow.com/questions/94932/coldfusion-mail-queue-stops-processing
我的目标是找到一个日志或者一些可以帮助我找到问题原因的东西。
有没有日志可以告诉我是什么原因导致 mailspoolservice 崩溃?我似乎无法在 CF Admin 中找到任何错误。
我也尝试过重现此问题,但是不成功。
我目前正在 Windows 2008 R2 上运行 CF9,并应用了最新的修补程序
答案1
您现在运行的是哪个版本的 ColdFusion,在哪个平台上?
您可以通过邮件设置下的 ColdFusion 管理员添加一些日志信息。 请参阅此处有关 ColdFusion 9 上的邮件日志记录的文档。
错误日志严重性
从下拉列表对象中,选择要写入日志文件的 SMTP 相关错误消息类型。选项如下:
调试(包含信息、警告和错误)
信息(包含警告和错误)
警告(包含错误)
错误
ColdFusion 将已发送邮件和邮件错误日志写入以下目录:
\coldfusion9\logs(Windows 服务器配置)
/opt/coldfusion9/log(Solaris 和 Linux 服务器配置)
cf_webapp_root/WEB-INF/cfusion/logs(多服务器和 J2EE 配置,所有平台)
生成的电子邮件日志文件包括:
mailsent.log-记录已发送的电子邮件信息。
mail.log—记录一般电子邮件错误。
您的邮件记录现在设置为什么?
答案2
在我们的一台生产服务器(出于向后兼容的原因,使用的是 coldfusion 8)上,我们也会时不时地遇到这个问题,尽管这种情况很少发生,大概半年一次左右。我把它放在一个很小的计划任务上,例如每小时运行一次,以观察邮件假脱机文件夹是否卡住,如果卡住,则重新启动服务(不是 cf 服务器,而是假脱机服务):
Mail-Spool-Directory 来自 coldfusion 8 默认目录:
<cfdirectory directory="C:\JRun4\servers\cfusion\cfusion-ear\cfusion-war\WEB-INF\cfusion\Mail\Spool" name="dirQuery" action="LIST" sort = "datelastmodified ASC">
<cfquery name="oldest" dbtype="query" maxrows="1">
SELECT dateLastModified FROM dirQuery ORDER BY dateLastModified
</cfquery>
<cfif oldest.recordcount GTE 1>
<cfif DateDiff("h",oldest.dateLastModified ,now()) GTE 2>
DO RESTART MAILQUEUE SERVICE...
<cfset sFactory = CreateObject("java","coldfusion.server.ServiceFactory")>
<cfset MailSpoolService = sFactory.mailSpoolService>
<cfset MailSpoolService.stop()>
<cfset MailSpoolService.start()>
done
<cfelse>
files there but younger than 2 h
</cfif>
<cfelse>
dir empty
</cfif>