RightFax C # через RFCOMAPILib - Вложения - PullRequest
2 голосов
/ 12 января 2011

Я пытаюсь эффективно отправлять факсы через RightFax.

Моим пользователям нужно отправлять факсы в PDF-файлах, и хотя приложение работает нормально, для массовой рассылки это очень медленно (> 20 получателей, т. Е. Около 40 секунд на факс).

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

RightFax имеет такую ​​концепцию * Библиотечные документы , поэтому я подумал, что мы могли бы сохранить PDF-документ как библиотечный документ на сервере, а затем повторно использовать его, поэтому нет необходимости загружать этот PDF для n пользователей.

Я могу создавать библиотечные документы без проблем (я могу получить их и т. Д.), Но как мне добавить к этому 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");

Для нас важно, как отправлять, скажем, 500 факсов наиболее эффективным способом, используя API через RFCOMAPILib. Я думаю, что если мы сможем повторно приложить PDF, это значительно улучшит производительность. Очевидно, что отправка факса за 40 секунд недопустима, если у вас есть сотни получателей.

Как мы можем отправлять факсы с вложениями в наиболее эффективном режиме через API?

1 Ответ

1 голос
/ 17 сентября 2013

StoreAsNewLibraryDocument () - это единственный практический способ хранения LibraryDocuments с использованием RightFax COM API, но если вы не используете ранее существующий LibraryDocument, вам нужно вызвать функцию сразу после отправки первого факса, который будет иметь обычный файл ( не LibraryDoc) вложение.

(Не создавайте объект LibraryDoc на сервере самостоятельно, как вы делали выше - вы сделаете это, только если у вас есть файл на сервере, который не является LibraryDocument, и вы хотите превратить его в один. Вероятно, вы никогда не встретите такой сценарий.)

Затем на новый LibraryDocument ссылаются (в последующих факсах) на строку идентификатора, указанную в качестве первого аргумента StoreAsNewLibraryDocument (). Если этот идентификатор не уникален для коллекции LibraryDocuments сервера RightFax, вы получите сообщение об ошибке. (Вместо этого вы можете использовать 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 с PageCount равным нулю. Это происходит на первый взгляд случайным образом и, вероятно, связано с ошибкой в ​​RightFax или, возможно, с неправильной настройкой сервера. Так что это очень хорошая идея, чтобы проверить ...

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

... перед отправкой любого из последующих факсов и при необходимости повторите попытку, пока он не заработает, или (если не удастся) сохранить LibraryDoc другим способом и отказаться от StoreAsNewLibraryDocument ().

Принимая во внимание, что если у вас нет такой проблемы, вы обычно можете отправить массовый факс примерно в 1/10 от времени, необходимого для того, чтобы каждый раз прикреплять (и загружать) локальный файл.

Если кто-то из OpenText / RightFax читает это и может объяснить, почему StoreAsNewLibraryDocument () иногда приводит к факсам с нулевой страницей, дополнительный ответ по этому поводу был бы весьма полезен!

...