Не удается отправить факс с помощью RFCOMAPILIB

Мы пытаемся отправить факс с помощью 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, поэтому мы не думаем, что есть какие-либо проблемы с портом, брандмауэром и т. д. Любая помощь будет принята с благодарностью.


person user3411977    schedule 19.04.2014    source источник


Ответы (1)


После того, как вы позвоните,

факс.Отправить()

затем вы должны сделать следующее:

RFHandle = факс.Handle()

Затем RFHandle предоставит вам доступ к СОЗДАННОМУ ФАКСУ на самом сервере (объект факса, который вы изначально создали, не обновляется при вызове факса.Send, за исключением того, что вы получаете дескриптор, назначенный RightFax).

Затем вы можете периодически использовать этот RFHandle для получения текущей версии объекта факса с сервера RightFax, которая будет включать текущее состояние факса. Например, после отправки факса подождите несколько секунд (RightFax нужно немного времени для создания изображения факса) и позвоните...

факс = факссервер.факс(RFHandle)

Это заполнит ваш объект факса текущими значениями для этого факса. Затем вы можете проверить его статус через....

Статус = факс.FaxStatus

(Различные значения FaxStatus определяются в RFCOMAPILIB.FaxStatusType)

Первоначально ваш статус будет Incomplete, затем NeedsFCS (преобразование титульного листа), и запланирована отправка, отправка и, в конечном итоге, DoneOK и DoneFailure на основе фактической отправки. Также есть имущество,

факс.FaxErrorCode

что, если у вас было FaxStatus = DoneFailure, FaxErrorCode даст вам более конкретную информацию о том, почему факс не удалось отправить.

И последнее, на что следует обратить внимание в вашем примере: вы не установили факс.OwnerId. Это укажет, под какой учетной записью будет отправлен факс. Сверху он будет отправлен через учетную запись, связанную с вашей учетной записью NT. Это может быть то, что вы хотите, но свойство OwnerID может позволить вам использовать другие учетные записи (потребуются разрешения/права).

ПРИМЕЧАНИЕ. Если вы хотите дождаться отправки факса (чтобы узнать, был ли он успешным или нет), вы должны включить задержку между каждым вызовом, факс = факссервер.факс(RFHandle). чтобы получить обновление для факса. Если вы отправляете факс (он не настроен на удержание для предварительного просмотра, а учетная запись не настроена на удержание для утверждения), рекомендуется установить интервал ожидания от 30 секунд до 1 минуты (если вы не используете FoIP, факс через IP). Отправка страницы (страниц) факса по телефонным линиям занимает время, примерно 1 минута на страницу - это общая оценка, помните, что есть не только ваш факс-сервер, но и принимающий факсимильный аппарат. Ваш фактический пробег может отличаться.

person Lee McKenna    schedule 03.03.2015