///<summary>
        ///TODO
        ///</summary>
        public bool ProcessMailItem(MailItem mail)
        {
            Mail = mail;

            List <string> docPageTypes;
            List <int>    docPages;

            GetDocPageTypes(out docPageTypes, out docPages);
            SO = _postOCR.GetSO();

            int  lastPage = docPageTypes.Count - 1;
            int  nextPageStart;
            bool success = false;

            try
            {
                for (int snip = 0; snip < docPageTypes.Count; snip++)
                {
                    int[] snips = new int[docPageTypes.Count];


                    if (snip == docPageTypes.Count)
                    {
                        nextPageStart = -1;
                    }
                    else
                    {
                        nextPageStart = docPages[snip];
                    }
                    string docType = docPageTypes[snip];
                    int    docPage = docPages[snip];

                    SnipInfo info = new SnipInfo
                                    (
                        SO,
                        docType,
                        docPageTypes.Count,
                        docPage,
                        nextPageStart,
                        snip == docPageTypes.Count - 1
                                    );

                    OnBeforeSnipping(info);
                    OnSnipRequested(info);
                    OnSnipAfter(info);
                    OnSnipIterated(info);
                }
                OnSnippingComplete(new EventArgs());
                success = true;
            }
            catch (System.Exception ex)
            {
                Console.WriteLine(ex);
                throw;
            }

            return(success);
        }
 protected virtual void OnSnipIterated(SnipInfo e)
 {
     SnipIterated(this, e);
 }
 protected virtual void OnSnipAfter(SnipInfo e)
 {
     SnipAfter(this, e);
 }
 protected virtual void OnSnipRequested(SnipInfo e)
 {
     SnipRequested(this, e);
 }
 protected virtual void OnBeforeSnipping(SnipInfo e)
 {
     BeforeSnipping(this, e);
 }