Esempio n. 1
0
        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);
            }
        }