我们正在运行Coldfusion 9.0.1,并已成功使用cfexchangemail检索电子邮件多年。
在过去几天内,一些用户的电话永远不会回来。这导致ColdFusion堆叠活动请求,最终导致任何请求都没有响应。
对于其他用户,呼叫成功。
这是电话:
<cfexchangemail action="get" folder="Inbox " name="weeksMail" connection="testconn1">
<cfexchangefilter name="maxRows" value=4>
</cfexchangemail>
有没有人有类似的问题?
更新:
我使用在生产中运行良好的测试帐户运行了一些手动查询。如果我删除maxRows过滤器,我会得到一个非常长的运行请求(尚未看到它返回)。将maxRows设置为18允许请求完成,但仅在大约10秒后完成。将maxRows设置为19似乎使其进入非响应模式。
这似乎表示消息的大小或某种损坏的数据。
更新2:
这似乎是电子邮件问题的大小。如果收件箱只有一封电子邮件,那么如果大小(大约)大约20kb,则呼叫将永远不会返回。可以正确返回19kb的电子邮件。
现在的问题是:一直都是如此,我们现在只看到这么大的电子邮件或做了一些改变吗?据我所知,我们的CF安装没有任何改变。
更新3
Coldfusion 10现在已经过测试。我们得到了相同的结果。
更新4
我已经能够通过直接的WEBDAV命中来触发问题,从而将ColdFusion从图片中删除。
答案 0 :(得分:4)
根据我的经验,cfexchangemail标记(CF10 / CF11)总是很慢,有时你会收到请求超时错误。我最终使用了Java EWS Managed API,这肯定比cfexchangemail标签更快。但是,您只需要学习如何使用API返回的方法。
以下是如何创建microsoft.exchange.webservices
对象的示例<cfscript>
service = createObject("Java", "microsoft.exchange.webservices.data.ExchangeService");
service.init();
version = createObject("Java", "microsoft.exchange.webservices.data.ExchangeVersion");
service.init(version.Exchange2010);
credentials = createObject("Java", "microsoft.exchange.webservices.data.WebCredentials");
credentials.init(yourusername, yourpassword);
service.setCredentials(credentials);
uri = createObject("Java", "java.net.URI");
uri.init("outlook webservices url");
service.setUrl(uri);
WellKnownFolderName=createObject("Java","microsoft.exchange.webservices.data.WellKnownFolderName");
result = service.FindItems(service.WellKnownFolderName.Inbox, CreateObject("java", "microsoft.exchange.webservices.data.ItemView").init(100));
for(item in result.getItems(){
// ..loop through each field and store their value
// in query object or something...
}
</cfscript>