FAXCOM和FXSCOMEX 传真编程_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > FAXCOM和FXSCOMEX 传真编程

FAXCOM和FXSCOMEX 传真编程

 2015/1/25 22:49:40  Freshcoder  程序员俱乐部  我要评论(0)
  • 摘要:需要引用的dl,如下信息,早起使用的是FXSCOM.DLL,现在微软提供了相应的扩展,其程序集为,FXSCOMEX.dllFXSCOMEX.dll提供跟加健全的方法,可以说所有关于传真的操作都在这个dll中。以下是传真中使用的主要方法:首先定义一个封装传真人相关信息的Bean1//定义传真需要封装的传真人相关的信息2publicclassFaxPeopleBean3{4publicstringName;5publicstringFaxNumber;6publicstringCompany
  • 标签:编程

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

 

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

 

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

  1. 首先定义一个封装传真人相关信息的Bean
class="code_img_closed" src="/Upload/Images/2015012522/0015B68B3C38AA5B.gif" alt="" />logs_code_hide('c006ebbc-0154-418a-af2b-b3d5275943ff',event)" src="/Upload/Images/2015012522/2B1B950FA3DF188F.gif" alt="" />
 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 枚举可以实时的获取,传真的发生情况,具体的操作代码可以写作这里
     }

 

发表评论
用户名: 匿名