2011-01-12 40 views
2

我試圖以有效的方式通過RightFax發送傳真。RightFax C#通過RFCOMAPILib - 附件

我的用戶需要傳真PDF,即使應用程序工作正常,但對於批量發送(> 20個收件人,每個傳真需要40秒)速度非常慢。

// Fax created 
fax.Attachments.Add(@"C:\\Test Attachments\\Products.pdf", BoolType.False); 
fax.Send(); 

的RightFax有*庫文檔,所以我認爲我們可以做的是存儲PDF文件作爲服務器上的庫文件,然後重新使用這個概念,所以沒有需要上傳這個PDF用於n個用戶。

我可以創建沒有問題的庫文檔(我可以檢索它們等),但是如何爲此添加PDF? (我在服務器上的權利。)

LibraryDocument doc2 = server.LibraryDocuments.Create; 
doc2.Description = "Test Doc 1"; 
doc2.ID = "568"; // tried ints everything! 
doc2.IsPublishedForWeb = BoolType.True; 
doc2.PageCount = 2; 
doc2.Save(); 

而且,一旦我創建了一個傳真,該API爲您提供了一個選項,「StoreAsNewLibraryDocument」,這是拋出一個異常運行時。 System.ArgumentException:值沒有什麼重要的我們是如何發送使用通過RFCOMAPILib的API說500頁的傳真在最有效的方式的預期範圍

fax.StoreAsNewLibraryDocument("PRODUCTS","the products"); 

內。我認爲,如果我們可以重用 PDF附件,它會大大提高性能。顯然,當您有數百個收件人時,在40秒內發送傳真是不可接受的。

我們如何通過API以最高效的模式發送帶有附件的傳真?

+0

這是一個非常基本的技術限制。傳真機通過電話線工作,信號傳輸速度最好是14.4 kbps。假設通過電子郵件選擇垃圾郵件方式,您可以獲得10 Mbps或更高的互聯網速度。 – 2013-01-05 16:37:46

回答

1

StoreAsNewLibraryDocument()是使用RightFax COM API存儲LibraryDocuments的唯一實用方法,但假設您沒有使用預先存在的LibraryDocument,則必須在發送第一個傳真後立即調用該函數,一個常規文件(不是 LibraryDoc)附件。 (不要在服務器上自己創建一個LibraryDoc對象,就像你上面所做的那樣 - 只有在服務器上有一個不是LibraryDocument的現有文件時,纔會這樣做,並且您希望使其成爲)

然後通過您指定爲StoreAsNewLibraryDocument()的第一個參數的ID字符串引用新LibraryDocument(在隨後的傳真附件中)。如果該ID不是唯一的RightFax服務器的LibraryDocuments集合,你會得到一個錯誤。 (如果要實際替換服務器上的文件,則可以使用StoreAsLibraryDocumentUpdate()。)另外,請始終指定AttachmentType。

從理論上講,這應該是你真正需要做的:


'第一傳真:

fax.Attachments.Add(@"C:\\Test Attachments\\Products.pdf", BoolType.False); 
fax.Attachments.Item(1).AttachmentType = AttachmentType.aFile; 
fax.Send(); 
fax.StoreAsNewLibraryDocument("PRODUCTS", "The Products"); 
server.LibraryDocuments("PRODUCTS").IsPublishedForWeb = BoolType.True; 

' 而對於所有後續傳真:

fax.Attachments.Add(server.LibraryDocuments("PRODUCTS")); 
fax.Attachments.Item(1).AttachmentType = AttachmentType.aLibraryDocument; 
fax.Send(); 

我之所以說「理論上」,是因爲這並不總是有效。有時,當你調用StoreAsNewLibraryDocument()您最終獲得具有零頁頁次一個LibraryDoc。這似乎是隨機發生的,可能是由於RightFax中的錯誤,或者可能是服務器配置錯誤導致的。所以這是一個非常好的主意來檢查......

server.LibraryDocuments("PRODUCTS").PageCount = 0 

...你發送任何後續的傳真之前,並在必要時重試,直到它的工作原理,或者(如果它不會)存儲LibraryDoc以某種方式放棄StoreAsNewLibraryDocument()。

然而,如果不存在這樣的問題,你通常可以在當你連接所花費的時間大約爲1/10,每次發送大量傳真(和上傳)的本地文件。

如果從OpenText公司/ RightFax的一些人讀這一點,可以解釋爲什麼StoreAsNewLibraryDocument()有時會導致零頁的傳真,關於額外的答案將是相當的欣賞!