/// <summary> /// Opens the selected MSG of EML file /// </summary> /// <param name="fileName"></param> private void OpenFile(string fileName) { // Open the selected file to read. string tempFolder = null; try { tempFolder = GetTemporaryFolder(); _tempFolders.Add(tempFolder); var msgReader = new Reader(); var files = msgReader.ExtractToFolder(fileName, tempFolder, genereateHyperlinksToolStripMenuItem.Checked); var error = msgReader.GetErrorMessage(); if (!string.IsNullOrEmpty(error)) throw new Exception(error); if (!string.IsNullOrEmpty(files[0])) webBrowser1.Navigate(files[0]); FilesListBox.Items.Clear(); foreach (var file in files) FilesListBox.Items.Add(file); } catch (Exception ex) { if (tempFolder != null && Directory.Exists(tempFolder)) Directory.Delete(tempFolder, true); MessageBox.Show(ex.Message); } }
public string Convert(String jobId, string pathToEml, string workingFolder) { Logger.DebugFormat("Coverting {0} in working folder {1}", pathToEml, workingFolder); var reader = new Reader(); var outFolder = Path.Combine(workingFolder, jobId); Logger.DebugFormat("Creating message working folder is {0}", outFolder); Directory.CreateDirectory(outFolder); Logger.Debug("Extracting files"); var files = reader.ExtractToFolder(pathToEml, outFolder); if (Logger.IsDebugEnabled) { foreach (var file in files) { Logger.DebugFormat("\t{0}", Path.GetFileName(file)); } Logger.DebugFormat("Total files {0}", files.Length); } var htmlFileName = files.FirstOrDefault(x => x.ToLowerInvariant().EndsWith(".htm")) ?? files.FirstOrDefault(x => x.ToLowerInvariant().EndsWith(".html")); if (htmlFileName == null) { var textFile = files.FirstOrDefault(x => x.ToLowerInvariant().EndsWith(".txt")); if (textFile != null) { htmlFileName = textFile + ".html"; var textcontent = File.ReadAllText(textFile); File.WriteAllText(htmlFileName, String.Format("<html><body><pre>{0}</html></body></pre>", textcontent)); } else { htmlFileName = "contentmissing.html"; File.WriteAllText(htmlFileName, "<html>No content found in mail.</html>"); } } var htmlNameWithoutExtension = Path.GetFileNameWithoutExtension(htmlFileName); var htmlContent = File.ReadAllText(htmlFileName); var dirInfoFullName = new DirectoryInfo(outFolder).FullName; htmlContent = Regex.Replace( htmlContent, @"src=""(?<src>.+?)""", new MatchEvaluator((m) => NormalizeImgEvaluator(m, dirInfoFullName)), RegexOptions.IgnoreCase); File.WriteAllText(htmlFileName, htmlContent); var pathToZip = Path.Combine(workingFolder, htmlNameWithoutExtension + ".ezip"); Logger.DebugFormat("New zip file is {0}", pathToZip); if (File.Exists(pathToZip)) { Logger.DebugFormat("Deleting previous file: {0}", pathToZip); File.Delete(pathToZip); } Logger.DebugFormat("Creating new file: {0}", pathToZip); ZipFile.CreateFromDirectory(outFolder, pathToZip); Logger.DebugFormat("Deleting message working folder", outFolder); Directory.Delete(outFolder, true); Logger.DebugFormat( "Convesion done {0} => {1}", pathToEml, pathToZip ); return pathToZip; }
private static void ProcessMessage(string rootDir, string name) { var outDir = rootDir + @"\out\" + name + "\\"; Directory.CreateDirectory(outDir); var inDir = rootDir + @"\in\"; var input = inDir + name + ".msg"; var d = new Reader(); var blah = d.ExtractToFolder(input, outDir); foreach (var s in blah) { Console.WriteLine(s); } CleanOutputFolder(outDir, "*.png"); CleanOutputFolder(outDir, "*.gif"); CleanOutputFolder(outDir, "*.jpg"); var files = ConvertHtmlFiles(outDir, 0); files = ConvertDocFiles(outDir, files); files = ConvertXLFiles(outDir, files); Console.WriteLine("Files Created : " + files); Collect(outDir, name); Console.WriteLine("Done"); }