Click here to Skip to main content
15,887,746 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Hi,
I am able to send fax successfully and getting the JobID.
But faxServer_OnOutgoingJobChanged() event not fired that's why i am not able to get the Fax Satatus.Only faxServer_OnOutgoingJobAdded() event fired.

Please help me.
My Code..

What I have tried:

public class FaxSender
{
#region Global Variable
private static string eFaxServerName = ConfigurationManager.AppSettings["eFaxServerName"].ToString();
#endregion
 
Hide   Expand    Copy Code
    private static FaxServer faxServer;
    private FaxDocument faxDoc;
    private static string faxNumber = string.Empty;
 
    public FaxSender()
    {
        StringBuilder objSBTrace = new StringBuilder();
 
        try
        {               
 
            faxServer = new FaxServer();
            faxServer.Connect(eFaxServerName);
            RegisterFaxServerEvents();
        }
        catch (Exception ex)
        {
 
        }
    }
 
    private void RegisterFaxServerEvents()
    {
 
        try
        {
 
            faxServer.OnOutgoingJobAdded +=
            new IFaxServerNotify2_OnOutgoingJobAddedEventHandler(faxServer_OnOutgoingJobAdded);
            faxServer.OnOutgoingJobChanged +=
                new IFaxServerNotify2_OnOutgoingJobChangedEventHandler(faxServer_OnOutgoingJobChanged);
            faxServer.OnOutgoingJobRemoved +=
                new IFaxServerNotify2_OnOutgoingJobRemovedEventHandler(faxServer_OnOutgoingJobRemoved);
 
            var eventsToListen =
                FAX_SERVER_EVENTS_TYPE_ENUM.fsetFXSSVC_ENDED | FAX_SERVER_EVENTS_TYPE_ENUM.fsetOUT_QUEUE |
                FAX_SERVER_EVENTS_TYPE_ENUM.fsetOUT_ARCHIVE | FAX_SERVER_EVENTS_TYPE_ENUM.fsetQUEUE_STATE |
                FAX_SERVER_EVENTS_TYPE_ENUM.fsetACTIVITY | FAX_SERVER_EVENTS_TYPE_ENUM.fsetDEVICE_STATUS;
 
            faxServer.ListenToServerEvents(eventsToListen);
        }
        catch (Exception ex)
        {
 
        }
    }
 
    #region Event Listeners
    private static void faxServer_OnOutgoingJobAdded(FaxServer pFaxServer, string bstrJobId)
    {           
 
        Console.WriteLine("OnOutgoingJobAdded event fired. A fax is added to the outgoing queue.");
    }
 
    private static void faxServer_OnOutgoingJobChanged(FaxServer pFaxServer, string bstrJobId, FaxJobStatus pJobStatus)
    {           
 
        Console.WriteLine("OnOutgoingJobChanged event fired. A fax is changed to the outgoing queue.");
 
        pFaxServer.Folders.OutgoingQueue.Refresh();
        PrintFaxStatus(pJobStatus, bstrJobId);
    }
 
    private static void faxServer_OnOutgoingJobRemoved(FaxServer pFaxServer, string bstrJobId)
    {
 
        Console.WriteLine("OnOutgoingJobRemoved event fired. Fax job is removed to outbound queue.");
    }
    #endregion

    private static void PrintFaxStatus(FaxJobStatus faxJobStatus, string bstrJobId)
    {
        try
        {
            if (faxJobStatus.ExtendedStatusCode == FAX_JOB_EXTENDED_STATUS_ENUM.fjesDIALING)
            {
                Console.WriteLine("Dialing...");
            }
 
            if (faxJobStatus.ExtendedStatusCode == FAX_JOB_EXTENDED_STATUS_ENUM.fjesTRANSMITTING)
            {
                Console.WriteLine("Sending Fax...");
            }
 
            if (faxJobStatus.Status == FAX_JOB_STATUS_ENUM.fjsCOMPLETED
                && faxJobStatus.ExtendedStatusCode == FAX_JOB_EXTENDED_STATUS_ENUM.fjesCALL_COMPLETED)
            {
                Console.WriteLine("Fax is sent successfully.");
            }
 
            if (faxJobStatus.Status == FAX_JOB_STATUS_ENUM.fjsFAILED)
            {
                Console.WriteLine("Fax sending Failed.");
            }
 
            if (faxJobStatus.Status == FAX_JOB_STATUS_ENUM.fjsINPROGRESS)
            {
                Console.WriteLine("Fax is in-progress.");
            }
 
            if (faxJobStatus.Status == FAX_JOB_STATUS_ENUM.fjsNOLINE)
            {
                Console.WriteLine("Fax is no line.");
            }
 
            if (faxJobStatus.Status == FAX_JOB_STATUS_ENUM.fjsPAUSED)
            {
                Console.WriteLine("Fax is paused.");
            }
 
            if (faxJobStatus.Status == FAX_JOB_STATUS_ENUM.fjsPENDING)
            {
                Console.WriteLine("Fax is pending.");
            }
 
            if (faxJobStatus.Status == FAX_JOB_STATUS_ENUM.fjsRETRIES_EXCEEDED)
            {
                Console.WriteLine("Fax retry exceeded.");
            }
 
            if (faxJobStatus.Status == FAX_JOB_STATUS_ENUM.fjsRETRYING)
            {
                objSTrace.Append("Fax is retrying");
                SaveLogger.SaveLoggerTrace(objSTrace);
                objSTrace.Clear();
                Console.WriteLine("Fax is retrying.");
            }
 
            if (faxJobStatus.Status == FAX_JOB_STATUS_ENUM.fjsROUTING)
            {
                objSTrace.Append("Fax is routing.");
                SaveLogger.SaveLoggerTrace(objSTrace);
                objSTrace.Clear();
                Console.WriteLine("Fax is routing.");
            }  
 
        }
        catch (Exception ex)
        {
        }
 
    }
 
    public string SendFax(string subject, string FaxDocument, string FaxNumber)
    {
 
        faxNumber = FaxNumber;<br />
        try
        {
            FaxDocumentSetup(subject, FaxDocument, FaxNumber);
            var JobId = faxDoc.Submit(faxServer.ServerName);
            faxDoc = null;              
 
            result = Convert.ToString(JobId[0]);
            Console.WriteLine("Job Id: " + Convert.ToString(JobId[0]));
        }
        catch (System.Runtime.InteropServices.COMException comException)
        {
 
            Console.WriteLine("Error connecting to fax server. Error Message: " + comException.Message);
            Console.WriteLine("StackTrace: " + comException.StackTrace);
        }
        catch (Exception ex)
        {
        }
        return result;
    }
 
    private void FaxDocumentSetup(string subject, string FaxDocument, string FaxNumber)
    {
 
        try
        {                
 
            faxDoc = new FaxDocument();
            faxDoc.Priority = FAX_PRIORITY_TYPE_ENUM.fptHIGH;
            faxDoc.ReceiptType = FAX_RECEIPT_TYPE_ENUM.frtNONE;
            faxDoc.AttachFaxToReceipt = true;
            faxDoc.Body = FaxDocument;
            faxDoc.Subject = subject;
            faxDoc.Recipients.Add(FaxNumber);
        }
        catch (Exception ex)
        {<br />
        }
    }
 
}
Posted

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900