2014-04-19 36 views
0

我們正在嘗試使用下面的使用代碼RFCOMAPILIb.dll發送傳真發送傳真(我們從堆棧溢出本身樣品)無法使用RFCOMAPILIb

RFCOMAPILib.FaxServerClass faxserver = new RFCOMAPILib.FaxServerClass(); 
faxserver.ServerName = "ServerName"; 
faxserver.Protocol = RFCOMAPILib.CommunicationProtocolType.cpNamedPipes; 
faxserver.UseNTAuthentication = RFCOMAPILib.BoolType.True; 
faxserver.OpenServer(); 

RFCOMAPILib.Fax fax = (RFCOMAPILib.Fax) faxserver.get_CreateObject(RFCOMAPILib.CreateObjectType.coFax); 

// set up your 'fax' object the way you want it, below is just some sample options 
fax.ToName = "dummy"; 
fax.ToFaxNumber = "dummy"; 
fax.ToVoiceNumber = "dummy"; 
fax.ToCompany = "dummy"; 
fax.FromName = "My Company"; 
fax.FromVoiceNumber = "dummy"; 

fax.Send(); 

string status=fax.faxstatus.tostring(); 

我們正在faxstatus爲110 用戶不能夠接收傳真。

任何想法可能是什麼問題。我們是否需要在客戶機上安裝特定於正確傳真的軟件?有趣的是,在同一臺機器上,我們可以在安裝正確的傳真客戶端後使用UI發送傳真,因此我們認爲不會有任何端口,防火牆等問題。任何幫助將不勝感激。

回答

0

之後你打電話,

fax.Send()

,那麼你應該做到以下幾點:

RFHandle = fax.Handle(),然後

的RFHandle會給你訪問發送到服務器本身的創建傳真(您最初創建的傳真對象,在您撥打傳真時未發送更新,除您要檢索由RightFax指定的句柄外)。

然後,您可以定期使用此RFHandle從RightFax服務器獲取當前版本的傳真對象,該對象將包括傳真的當前狀態。例如,發送傳真後,等待幾秒鐘(RightFax的需要一點時間來產生傳真圖像),並調用......

傳真= faxserver.fax(RFHandle)

這將填充您的傳真與此傳真的當前值對象。然後,您可以通過....

狀態檢查其狀態= fax.FaxStatus

(各種FaxStatus值被下定義,RFCOMAPILIB.FaxStatusType)

你的狀態會initiall是不完整的,然後NeedsFCS (封面轉換),並計劃發送,發送,並最終根據實際發送完成DoneOK和DoneFailure。還有一個特性,

fax.FaxErrorCode

它,如果你有FaxStatus = DoneFailure,該FaxErrorCode會給你更多的具體信息,爲什麼傳真發送失敗。

您的示例中最後要指出的是,您沒有設置fax.OwnerId。這將表明傳真將在哪個帳戶下發送。從上面,它將通過與您的NT帳戶關聯的帳戶發送。這可能是你想要的,但OwnerID屬性可以允許你使用其他賬戶(需要權限/權限)。

注意:如果您希望等到發送傳真(以便知道它是否成功),則應在每次調用fax = faxserver.fax(RFHandle)之間加入延遲。每次撥打此電話以獲取傳真更新。如果您正在發送傳真(未將其設置爲保留以進行預覽,並且該帳戶未設置爲等待批准),建議使用30秒至1分鐘的睡眠間隔(除非您正在使用FoIP,通過IP傳真)。通過電話線發送傳真頁面需要一定的時間,每頁大概1分鐘是一般估計,請記住,不僅僅是您的傳真服務器,還有接收傳真機。你的實際里程可能有所不同