RightFax C#通过RFCOMAPILib - 附件

时间:2011-01-12 02:42:01

标签: c# fax rightfax captaris

我正在尝试通过RightFax以有效的方式发送传真。

我的用户需要传真PDF,即使应用程序运行正常,批量发送速度也非常慢(> 20个收件人,每个传真需要40秒)。

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

RightFax有 * Library Documents 这个概念,所以我认为我们可以做的是将PDF文档作为Library Document存储在服务器上然后重复使用,所以没有必要为n个用户上传此PDF。

我可以毫无问题地创建库文档(我可以检索它们等),但是如何为此添加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:值不在预期范围内

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

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

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

1 个答案:

答案 0 :(得分:1)

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

(不要像上面那样自己在服务器上创建一个LibraryDoc对象 - 如果服务器上的现有文件不是LibraryDocument,你只想这样做,你想要进入一,你可能永远不会遇到这种情况。)

然后,您指定的ID字符串作为StoreAsNewLibraryDocument()的第一个参数引用(在后续传真附件中)新的LibraryDocument。如果该ID不是RightFax Server的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()时,你最终会得到一个PageCount为零的LibraryDoc。这似乎是随机发生的,可能是由于RightFax中的错误,或者可能是服务器配置错误。所以检查......是个好主意。

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

...在您发送任何后续传真之前,如果有必要,重试直到它工作,或者(如果不会)以其他方式存储LibraryDoc并放弃StoreAsNewLibraryDocument()。

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

如果来自OpenText / RightFax的人读到这个并且可以解释为什么StoreAsNewLibraryDocument()有时会导致零页传真,那么关于这一点的额外答案将会受到很多赞赏!