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分钟是一般估计,请记住,不仅仅是您的传真服务器,还有接收传真机。你的实际里程可能有所不同