4

我們正在運行ColdFusion 9.0.1,並已成功用於cfexchangemail檢索電子郵件了數年。爲什麼cfexchangemail的獲取行爲永不返回?

在過去的幾天對一些用戶的電話不會再回來。這導致ColdFusion堆疊活動請求,最終導致對任何請求沒有響應。

其他用戶的呼叫成功運行。

這是呼叫:

<cfexchangemail action="get" folder="Inbox " name="weeksMail" connection="testconn1"> 
    <cfexchangefilter name="maxRows" value=4> 
</cfexchangemail> 

有沒有人有類似的問題?

UPDATE:

我跑了一個測試帳號進行一些手動查詢,這是在生產運行正常。如果我刪除了maxRows過濾器,我會得到一個非常長的運行請求(還沒有看到它返回)。將maxRows設置爲18允許請求完成,但僅在約10秒後。將maxRows設置爲19似乎會使其進入非響應模式。

這似乎表明一個尺寸消息或某種損壞的數據。

更新2:

這似乎是一個大小電子郵件問題。如果收件箱只有一封電子郵件,則該電話將永遠不會返回(如果大小約爲20kb)。 19kb電子郵件可以正確返回。

現在的問題是:有沒有這個一直以來的情況下,我們只是看到這個郵件現在大或做了什麼變化?據我所知CF安裝沒有任何變化。

UPDATE 3

ColdFusion的10現在已經過測試。我們得到相同的結果。

UPDATE 4

我已經能夠用直WEBDAV命中,內搭的ColdFusion出來的畫面引發的問題。

+0

您最近升級您的Exchange服務器2010年的目標? – Jarede

+0

你有請求超時設置嗎? –

+0

Cf服務器和Exchange服務器之間的網絡設備是否有任何更改? –

回答

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> 
+0

謝謝。我們最終也使用了EWS Managed API。 –

相關問題