private void MoveRoutedDocuments(List<EmailDocument> routedDocuments)
        {
            using (SPDocumentCopyService.Copy spDocumentCopyService = new SPDocumentCopyService.Copy())
            {
                spDocumentCopyService.Url = Config["SharePointSiteUrl"] + "_vti_bin/Copy.asmx";
                spDocumentCopyService.Credentials = CredentialCache.DefaultCredentials;

                foreach (EmailDocument document in routedDocuments)
                {
                    FieldInformation myFieldInfo = new FieldInformation();
                    FieldInformation[] basicFieldInfoArray = { myFieldInfo };
                    byte[] myByteArray;

                    uint myGetUint = spDocumentCopyService.GetItem(document.DocumentPath, out basicFieldInfoArray, out myByteArray);

                    CopyResult myCopyResult1 = new CopyResult();
                    CopyResult myCopyResult2 = new CopyResult();
                    CopyResult[] myCopyResultArray = { myCopyResult1, myCopyResult2 };

                    document.DocumentType = GetFilePropertyValue("Document Type", basicFieldInfoArray);
                    document.DocumentSubtype = GetFilePropertyValue("Document Subtype", basicFieldInfoArray);

                    FieldInformation fieldDocumentType = new FieldInformation { DisplayName = "Document Type Literal", InternalName = "DocumentTypeLiteral", Type = FieldType.Text, Value = document.DocumentType };
                    FieldInformation fieldDocumentSubType = new FieldInformation { DisplayName = "Document Subtype Literal", InternalName = "DocumentSubtypeLiteral", Type = FieldType.Text, Value = document.DocumentSubtype };

                    try
                    {
                        FieldInformation[] fullFieldInfoArray = { myFieldInfo, fieldDocumentType, fieldDocumentSubType };

                        uint myCopyUint = spDocumentCopyService.CopyIntoItems(document.DocumentPath, new string[] { document.DestinationUrl }, fullFieldInfoArray, myByteArray, out myCopyResultArray);

                        CopyResult copyResult = myCopyResultArray[0];

                        if (copyResult != null && copyResult.ErrorCode == SPDocumentCopyService.CopyErrorCode.Success)
                        {
                            document.RoutedSuccessfully = true;
                            document.RoutedDeletedSuccessfully = DeleteRoutedDocument(document);
                        }
                        else
                            document.RoutedSuccessfully = false;

                        if (myCopyUint != 0 || copyResult.ErrorCode != SPDocumentCopyService.CopyErrorCode.Success)
                        {
                            Logger logger = LogManager.GetCurrentClassLogger();
                            logger.Log(LogLevel.Error, "CopyRoutedDocuments: Exception occurred when copying a routed document", String.Concat(myCopyResultArray));
                        }

                        if (document.RoutedSuccessfully && document.RoutedDeletedSuccessfully)
                        {
                            LogDocumentRouting(document);
                        }
                    }
                    catch (Exception e)
                    {
                        Logger logger = LogManager.GetCurrentClassLogger();
                        logger.Log(LogLevel.Error, "CopyRoutedDocuments: Exception occurred when copying a routed document", e);
                    }
                }
            }
        }
        public void LoadMail(List<Email> emails)
        {
            using (SPDocumentCopyService.Copy spDocumentCopyService = new SPDocumentCopyService.Copy())
            {
                spDocumentCopyService.Credentials = CredentialCache.DefaultCredentials;

                foreach (Email email in emails)
                {

                    CopyResult myCopyResult1 = new CopyResult();
                    CopyResult myCopyResult2 = new CopyResult();
                    CopyResult[] myCopyResultArray = { myCopyResult1, myCopyResult2 };

                    FieldInformation from = new FieldInformation { DisplayName = "From Email", InternalName = "From Email", Type = FieldType.Text, Value = email.From };
                    FieldInformation title = new FieldInformation { DisplayName = "Title", InternalName = "Title", Type = FieldType.Text, Value = email.Subject };
                    FieldInformation subject = new FieldInformation { DisplayName = "Email Subject", InternalName = "Email Subject", Type = FieldType.Text, Value = email.Subject };
                    FieldInformation body = new FieldInformation { DisplayName = "Email Body", InternalName = "Email Body", Type = FieldType.Text, Value = email.Body };
                    FieldInformation dateReceived = new FieldInformation { DisplayName = "Date Received", InternalName = "Date Received", Type = FieldType.Text, Value = DateTime.Now.ToString() };

                    FieldInformation[] myFieldInfoArray = { from, dateReceived, subject, body };

                    if (email.Attachments.Count > 0)
                    {
                        foreach (Attachment attachment in email.Attachments)
                        {
                            string copySource = attachment.FileName;
                            string[] copyDest = { Config["SharePointSiteUrl"] + Config["SharePointLibraryName"] + attachment.FileName };

                            try
                            {
                                byte[] myByteArray = attachment.Content;

                                uint myCopyUint = spDocumentCopyService.CopyIntoItems(copySource, copyDest, myFieldInfoArray, myByteArray, out myCopyResultArray);

                                if (myCopyUint != 0)
                                {
                                    Logger logger = LogManager.GetCurrentClassLogger();
                                    logger.Log(LogLevel.Error, String.Concat(myCopyResultArray));
                                }
                            }
                            catch (Exception e)
                            {
                                Logger logger = LogManager.GetCurrentClassLogger();
                                logger.Log(LogLevel.Error, "Exception occurred when loading mail into SharePoint library", e);
                            }
                        }
                    }
                    else // An email without attachments:
                    {
                        try
                        {
                            string[] copyDest = { Config["SharePointSiteUrl"] + Config["SharePointLibraryName"] + GetPrependedDateTime() + "No_Attachment" };
                            byte[] myByteArray = { byte.MinValue };

                            uint myCopyUint = spDocumentCopyService.CopyIntoItems("nofile", copyDest, myFieldInfoArray, myByteArray, out myCopyResultArray);

                            if (myCopyUint != 0)
                            {
                                Logger logger = LogManager.GetCurrentClassLogger();
                                logger.Log(LogLevel.Error, String.Concat(myCopyResultArray));
                            }
                        }
                        catch (Exception e)
                        {
                            Logger logger = LogManager.GetCurrentClassLogger();
                            logger.Log(LogLevel.Error, "Exception occurred when loading mail into SharePoint library", e);
                        }
                    }
                }
            }
            TimeLastLoaded = DateTime.Now;
        }