Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
RightFax C#通过RFCOMAPILib-附件_C#_Fax_Rightfax_Captaris - Fatal编程技术网

RightFax C#通过RFCOMAPILib-附件

RightFax C#通过RFCOMAPILib-附件,c#,fax,rightfax,captaris,C#,Fax,Rightfax,Captaris,我正在努力以高效的方式通过RightFax发送传真 我的用户需要传真PDF,即使应用程序运行良好,批量发送速度也非常慢(超过20个收件人,每份传真大约需要40秒) RightFax具有*库文档的概念,因此我认为我们可以将PDF文档作为库文档存储在服务器上,然后重新使用,因此不需要为n个用户上载此PDF 我可以毫无问题地创建库文档(我可以检索它们,等等),但如何向其中添加PDF?(我对服务器拥有权限。) 此外,创建传真后,API会为您提供一个“StoreAsNewLibraryDocument”选

我正在努力以高效的方式通过RightFax发送传真

我的用户需要传真PDF,即使应用程序运行良好,批量发送速度也非常慢(超过20个收件人,每份传真大约需要40秒)

RightFax具有*库文档的概念,因此我认为我们可以将PDF文档作为库文档存储在服务器上,然后重新使用,因此不需要为n个用户上载此PDF

我可以毫无问题地创建库文档(我可以检索它们,等等),但如何向其中添加PDF?(我对服务器拥有权限。)

此外,创建传真后,API会为您提供一个“StoreAsNewLibraryDocument”选项,该选项在运行时会引发异常System.ArgumentException:值不在预期范围内

fax.StoreAsNewLibraryDocument("PRODUCTS","the products");
对我们来说,重要的是如何通过RFCOMAPILib使用API以最有效的方式发送500份传真。我认为,如果我们可以重用附加的PDF,它将大大提高性能。显然,当你有数百个收件人时,在40秒内发送传真是不可接受的

我们如何通过API以最有效的方式发送带有附件的传真

StoreAsNewLibraryDocument()是使用RightFax COM API存储LibraryDocuments的唯一实用方法,但假设您没有使用预先存在的LibraryDocument,则必须在发送第一份传真后立即调用该函数,该传真将具有常规文件(而不是LibraryDoc)附件

(不要像上面那样,自己在服务器上创建LibraryDoc对象-只有在服务器上有一个不是LibraryDocument的现有文件,并且您希望将其转换为一个文件时,您才会这样做。您可能永远不会遇到这种情况。)

然后,通过指定为StoreAsNewLibraryDocument()的第一个参数的ID字符串引用新的LibraryDocument(在后续传真附件中)。如果该ID不是RightFax服务器的LibraryDocuments集合的唯一ID,则会出现错误。(如果要实际替换服务器上的文件,可以使用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()

然而,如果你没有这个问题,你通常可以在每次附加(和上传)本地文件所需时间的十分之一内发送一份大规模传真


如果OpenText/RightFax的人读到了这篇文章,并且可以解释为什么StoreAsNewLibraryDocument()有时会导致零页传真,那么如果您能提供更多关于这一点的答案,我们将不胜感激

这是一个非常基本的技术限制。传真机通过电话线工作,信号传输速度最多为14.4 kbps。你可以在10 Mbps或更高的网速下使用电子邮件来取代垃圾邮件。
fax.Attachments.Add(server.LibraryDocuments("PRODUCTS"));
fax.Attachments.Item(1).AttachmentType = AttachmentType.aLibraryDocument;
fax.Send();
server.LibraryDocuments("PRODUCTS").PageCount = 0