FAXCOM和FXSCOMEX 传真编程

需要引用的dl,如下信息,早起使用的是FXSCOM.DLL,现在微软提供了相应的扩展,其程序集为,FXSCOMEX.dll

 

FXSCOMEX.dll 提供跟加健全的方法,可以说所有关于传真的操作都在这个dll中。

 

以下是传真中使用的主要方法:

  1. 首先定义一个封装传真人相关信息的Bean
 1  //定义传真需要封装的传真人相关的信息

 2   public  class FaxPeopleBean

 3     {

 4       public string Name;

 5       public string FaxNumber;

 6       public string Company;

 7 

 8       public DateTime ScheduleTime;

 9 

10       public FaxPeopleBean()

11       {

12           ScheduleTime = QLOAParams.DtSqlDbMinValue;

13       }

14     }
View Code

 

  2. 发送传真的方法

 1         public object sendFaxBatchDoc(FaxPeopleBean recipient, FaxPeopleBean sender, List<string> docList)

 2         {

 3             bool isConnected=false;

 4             FaxServer objFaxServer=null;

 5             try

 6             {

 7                 objFaxServer = new FaxServer();

 8                 FaxDocument objFaxDocument = new FaxDocument();

 9                 Object jobIds;//每次发送后,都会返回一个传真作业id,用于监控此传真的发送情况

10                 //Connect to the fax server

11                 objFaxServer.Connect(""); //""代表连接到本地机器服务,也可以使用其它网络传真服务器

12                 isConnected = true;

13                 SetOutgoingQueue(objFaxServer);

14                 objFaxDocument.Sender.Name = sender.Name;

15                 objFaxDocument.Sender.Company = sender.Company;

16                 objFaxDocument.Sender.FaxNumber = sender.FaxNumber;

17                 if (sender.ScheduleTime != QLOAParams.DtSqlDbMinValue)

18                 {

19                     // Specify that the fax is to be sent at a particular time

20                     objFaxDocument.ScheduleType = FAXCOMEXLib.FAX_SCHEDULE_TYPE_ENUM.fstSPECIFIC_TIME;

21                     //CDate converts the time to the Date data type

22                     objFaxDocument.ScheduleTime = sender.ScheduleTime;

23                 }

24 

25                 //Set the fax priority

26                 objFaxDocument.Priority = FAXCOMEXLib.FAX_PRIORITY_TYPE_ENUM.fptHIGH;

27                 // 'Add the recipient

28                 objFaxDocument.Recipients.Add(recipient.FaxNumber, recipient.Name);

29                 string[] files = docList.ToArray();

30                 object bodys = files;

31                 objFaxDocument.Bodies = bodys;

32                 int result = objFaxDocument.ConnectedSubmit2(objFaxServer, out jobIds);

33                 return jobIds;

34             }

35             finally

36             {

37                 if (isConnected && objFaxServer!=null)

38                 {

39                     objFaxServer.Disconnect();

40                 }                  

41             }

42         }

 

  3. 用于设置传真的一些属性,必须连接过后才可以设置

       public void SetOutgoingQueue(FaxServer objFaxServer)

        {

            FaxOutgoingQueue objFaxOutgoingQueue;

            //'Get the outgoing queue object

            objFaxOutgoingQueue = objFaxServer.Folders.OutgoingQueue;



            //'Refresh the queue object

            objFaxOutgoingQueue.Refresh();

            objFaxOutgoingQueue.Retries = 10; //重试10次后不再发生

            objFaxOutgoingQueue.RetryDelay = 1;





            //The Branding property is a Boolean value that indicates whether the fax service generates a brand (banner)

            //at the top of outgoing fax transmissions. A brand contains transmission-related information, such as the transmitting

            //station identifier, date, time, and page count.

            objFaxOutgoingQueue.Branding = true;

        }

 

  4. 取消某个传真的发送

        public void CancelOutgoingQueue(string faxJobid)

        {

            FaxServer objFaxServer = new FaxServer();

            FaxOutgoingQueue objFaxOutgoingQueue;

            FaxOutgoingJob objFaxOutgoingJob;

            //'Connect to the fax server

            objFaxServer.Connect("");



            //'Get the outgoing queue object

            objFaxOutgoingQueue = objFaxServer.Folders.OutgoingQueue;

            //'Refresh the queue object

            objFaxOutgoingQueue.Refresh();



            try

            {

                objFaxOutgoingJob = (FaxOutgoingJob)objFaxOutgoingQueue.GetJob(faxJobid);               //找不到时会发生异常

                objFaxOutgoingJob.Cancel();

            }

            catch { }

            objFaxServer.Disconnect();

        }

  5.  需要对传真发送情况进行监控

FAXCOMEXLib.FaxServer _faxServer= new FaxServer();

            _faxServer.Connect("");

            _faxServer.OnOutgoingJobChanged +=FaxServer_OnOutgoingJobChanged;
 _faxServer.ListenToServerEvents( FAXCOMEXLib.FAX_SERVER_EVENTS_TYPE_ENUM.fsetFXSSVC_ENDED | FAXCOMEXLib.FAX_SERVER_EVENTS_TYPE_ENUM.fsetOUT_QUEUE;

 

  6. 监控的方法在这里

     public void FaxServer_OnOutgoingJobChanged(FAXCOMEXLib.IFaxServer pFaxServer, string bstrJobId, FAXCOMEXLib.IFaxJobStatus pJobStatus)

        {



        //根据pJobStatus 枚举可以实时的获取,传真的发生情况,具体的操作代码可以写作这里
     }

 

你可能感兴趣的:(com)