private string ExtractFileFromAttachment(string filename, string archFileName, string externalFileName) { using (var fs = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read)) { var logger = LogManager.GetLogger(GetType()); try { var message = Mime.Parse(fs); message = UueHelper.ExtractFromUue(message, Path.GetTempPath()); var attachments = message.GetValidAttachements(); foreach (var entity in attachments) { var attachmentFilename = entity.GetFilename(); if (!FileHelper.CheckMask(attachmentFilename, archFileName) && !FileHelper.CheckMask(attachmentFilename, externalFileName)) { continue; } attachmentFilename = Path.Combine(Path.GetTempPath(), attachmentFilename); entity.DataToFile(attachmentFilename); return(attachmentFilename); } } catch (Exception ex) { logger.ErrorFormat( "Возникла ошибка при попытке перепровести прайс. Не удалось обработать файл {0}. Файл должен быть письмом (*.eml)\n{1}", filename, ex); throw; } } throw new Exception(String.Format("В архиве '{0}' не удалось найти архив '{1}' или файл прайс листа {2}", filename, archFileName, externalFileName)); }
public void ProcessMime(Mime m) { var from = MimeEntityExtentions.GetAddressList(m); m = UueHelper.ExtractFromUue(m, DownHandlerPath); FillSourcesTable(); try { CheckMime(m); ProcessAttachs(m, from); } catch (EMailSourceHandlerException e) { // Формируем список приложений, чтобы использовать // его при отчете о нераспознанном письме ErrorOnMessageProcessing(m, from, e); } }