/// <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"); }
/// <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); }