Beispiel #1
0
        /// <summary>
        /// Elabora i file _info.xml ed i relativi file eml scaricati.
        /// L'elaborazione produce una cartella con tutti gli allegati per ciascun file.
        /// Vengono anche elaborati ed espansi i file compressi
        /// Al termine del processo viene generato un file _index.xml che contiene l'elenco dei file allegati con marcatura di quelli speciali per la PEC
        /// es. Postacert.eml, daticert.xml ecc...
        /// </summary>
        public void ProcessFiles()
        {
            FileLogger.Info(_loggerName, "Avvio elaborazione mail scaricate");
            try
            {
                String[] files    = MailInfo.GetInfoFiles(_parameters.DropFolder);
                MailInfo mailInfo = null;
                foreach (String filename in files)
                {
                    try
                    {
                        if (_cancelRequest())
                        {
                            FileLogger.Info(_loggerName, "Chiusura modulo invocata dall'utente.");
                            return;
                        }

                        mailInfo = MailInfo.Load(filename);
                        if (mailInfo.HasError() || mailInfo.Status != MailInfo.ProcessStatus.Downloaded)
                        {
                            continue;
                        }

                        mailInfo.Process(_parameters.DropFolder, _parameters.BiblosMaxLength);
                    }
                    catch (Exception ex_int)
                    {
                        String pecName = filename;
                        if (mailInfo != null)
                        {
                            pecName = mailInfo.Subject;
                        }
                        FileLogger.Error(_loggerName, string.Format("Errore in elaborazione della mail {0}. Il flusso normale proseguirà con le successive mail.", pecName), ex_int);
                        _sendMessage(string.Format("Errore in elaborazione mail {0}. Il flusso normale proseguirà con le successive mail. Exception: {1} - Stacktrace: {2}", pecName, ex_int.Message, _fullStacktrace(ex_int)));
                    }
                }
            }
            catch (Exception ex)
            {
                FileLogger.Error(_loggerName, "Errore globale in elaborazione delle mails.", ex);
                _sendMessage(string.Format("Errore globale in elaborazione delle mails. Exception:{0} - Stacktrace: {1}", ex.Message, _fullStacktrace(ex)));
            }
            FileLogger.Info(_loggerName, "Fine elaborazione mail scaricate");
        }
Beispiel #2
0
        /// <summary>
        /// Elabora i file _info.xml ed i relativi file eml scaricati.
        /// L'elaborazione produce una cartella con tutti gli allegati per ciascun file.
        /// Vengono anche elaborati ed espansi i file compressi
        /// Al termine del processo viene generato un file _index.xml che contiene l'elenco dei file allegati con marcatura di quelli speciali per la PEC
        /// es. Postacert.eml, daticert.xml ecc...
        /// </summary>
        public SortedList <short, StatisticLog> ProcessFiles(SortedList <short, StatisticLog> statistics)
        {
            FileLogger.Info(_loggerName, "Avvio elaborazione mail scaricate");
            try
            {
                String[] files = MailInfo.GetInfoFiles(_parameters.DropFolder);
                MailInfo mailInfo = null;
                DateTime start, end;
                foreach (String filename in files)
                {
                    start = DateTime.Now;
                    try
                    {
                        if (_cancelRequest())
                        {
                            FileLogger.Info(_loggerName, "Chiusura modulo invocata dall'utente.");
                            return(statistics);
                        }

                        mailInfo = MailInfo.Load(filename);
                        if (mailInfo.HasError() || mailInfo.Status != MailInfo.ProcessStatus.Downloaded)
                        {
                            continue;
                        }

                        mailInfo.Process(_parameters.DropFolder, _parameters.BiblosMaxLength);
                        end = DateTime.Now;
                        if (statistics != null && mailInfo != null && statistics.Keys.Any(f => f == mailInfo.IDPECMailBox))
                        {
                            statistics[mailInfo.IDPECMailBox].ElaboratedTime = statistics[mailInfo.IDPECMailBox].ElaboratedTime + (TimeSpan.FromTicks(end.Ticks) - TimeSpan.FromTicks(start.Ticks));
                        }
                    }
                    catch (Exception ex_int)
                    {
                        String pecName = filename;
                        if (mailInfo != null)
                        {
                            pecName = mailInfo.Subject;
                            try
                            {
                                end = DateTime.Now;
                                if (statistics != null && mailInfo != null && statistics.Keys.Any(f => f == mailInfo.IDPECMailBox))
                                {
                                    statistics[mailInfo.IDPECMailBox].ElaboratedTime = statistics[mailInfo.IDPECMailBox].ElaboratedTime + (TimeSpan.FromTicks(end.Ticks) - TimeSpan.FromTicks(start.Ticks));
                                    statistics[mailInfo.IDPECMailBox].PECError++;
                                }
                                PECMailBox box = MailStoreFacade.Factory.PECMailboxFacade.GetById(mailInfo.IDPECMailBox);
                                MailStoreFacade.Factory.PECMailboxLogFacade.InsertLog(ref box, "ERRORE - Elaborazione EML", PECMailBoxLogFacade.PecMailBoxLogType.ErrorEval);
                            }
                            catch (Exception)
                            {
                            }
                        }
                        FileLogger.Error(_loggerName, string.Format("Errore in elaborazione della mail {0}. Il flusso normale proseguirà con le successive mail.", pecName), ex_int);
                        _sendMessage(string.Format("Errore in elaborazione mail {0}. Il flusso normale proseguirà con le successive mail. Exception: {1} - Stacktrace: {2}", pecName, ex_int.Message, _fullStacktrace(ex_int)));
                    }
                }
            }
            catch (Exception ex)
            {
                FileLogger.Error(_loggerName, "Errore globale in elaborazione delle mails.", ex);
                _sendMessage(string.Format("Errore globale in elaborazione delle mails. Exception:{0} - Stacktrace: {1}", ex.Message, _fullStacktrace(ex)));
            }
            FileLogger.Info(_loggerName, "Fine elaborazione mail scaricate");
            return(statistics);
        }