0

我们正在尝试使用以下代码使用 RFCOMAPILIb.dll 发送传真(我们从堆栈溢出本身获取示例)

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();

我们收到的传真状态为 110。用户无法接收传真。

知道可能是什么问题。我们是否需要在客户端机器上安装任何特定于正确传真的软件。有趣的是,在同一台机器上,我们可以使用安装 Right Fax 客户端后提供的 UI 发送传真,因此我们认为端口、防火墙等没有任何问题。任何帮助将不胜感激。

4

1 回答 1

0

打电话后,

传真.Send()

然后,您应该执行以下操作:

RFHandle = 传真.Handle()

然后,RFHandle 将允许您访问服务器本身上的 CREATED FAX(您最初创建的传真对象,在您调用fax.Send 时不会更新,除非您检索由 RightFax 分配的句柄)。

然后,您可以定期使用此 RFHandle 从 RightFax 服务器获取传真对象的当前版本,其中包括传真的当前状态。例如,发送传真后,等待几秒钟(RightFax 需要一点时间来生成传真图像)并调用...

传真 = 传真服务器.传真(RFHandle)

这将使用此传真的当前值填充您的传真对象。然后,您可以通过...检查其状态。

状态 = 传真.FaxStatus

(各种 FaxStatus 值在 RFCOMAPILIB.FaxStatusType 下定义)

您的状态最初会是 Incomplete,然后是 NeedsFCS(Coversheet 转换),根据实际发送情况,有计划发送、发送,最终 DoneOK 和 DoneFailure。还有一个属性,

传真.FaxErrorCode

如果您有 FaxStatus = DoneFailure,则 FaxErrorCode 将为您提供有关传真发送失败原因的更具体信息。

在您的示例中要指出的最后一件事是,您没有设置fax.OwnerId。这将指示传真将在哪个帐户下发送。从上面,它将通过与您的 NT 帐户关联的帐户发送。这可能是您希望的,但 OwnerID 属性可以允许您使用其他帐户(需要权限/权限)。

注意:如果您希望等到传真发送完毕(以便知道它是否成功),您应该在每次调用之间包含一个延迟,fax=faxserver.fax(RFHandle) 您必须每次都进行此调用获取传真的更新。如果您正在发送传真(它没有设置为预览,并且帐户没有设置为等待批准),建议 30 秒到 1 分钟的睡眠间隔(除非您使用 FoIP,IP 传真)。通过电话线发送传真页面需要时间,每页大约 1 分钟是一般估计,请记住,不仅有您的传真服务器,还有接收传真机。您的实际里程可能会有所不同。

于 2015-03-03T14:54:05.897 回答