private void PopulateEml(string emlFilePath) { try { CDO.Message msg = new CDO.MessageClass(); ADODB.Stream stream = new ADODB.StreamClass(); stream.Open(Type.Missing, ADODB.ConnectModeEnum.adModeUnknown, ADODB.StreamOpenOptionsEnum.adOpenStreamUnspecified, String.Empty, String.Empty); stream.LoadFromFile(emlFilePath); stream.Flush(); msg.DataSource.OpenObject(stream, "_Stream"); msg.DataSource.Save(); stream.Close(); _emlFile = new Eml { From = msg.From, To = msg.To, CC = msg.CC, Body = string.IsNullOrEmpty(msg.HTMLBody) ? msg.TextBody : msg.HTMLBody, Subject = msg.Subject }; } catch (Exception ex) { } }
internal static CDO.Message ParseEmlFile(string file) { // Check file exists and is readable if (!File.Exists(file)) { return(null); } try { File.Open(file, FileMode.Open, FileAccess.Read).Dispose(); } catch (IOException) { return(null); } CDO.Message msg = new CDO.MessageClass(); ADODB.Stream stream = new ADODB.StreamClass(); stream.Open(Type.Missing, ADODB.ConnectModeEnum.adModeUnknown, ADODB.StreamOpenOptionsEnum.adOpenStreamUnspecified, string.Empty, string.Empty); stream.LoadFromFile(file); stream.Flush(); msg.DataSource.OpenObject(stream, "_Stream"); msg.DataSource.Save(); stream.Close(); if (string.IsNullOrWhiteSpace(msg.Sender) && string.IsNullOrWhiteSpace(msg.To) && string.IsNullOrWhiteSpace(msg.From) && string.IsNullOrWhiteSpace(msg.TextBody) && string.IsNullOrWhiteSpace(msg.HTMLBody) && string.IsNullOrWhiteSpace(msg.From) ) { return(null); } return(msg); }
//SaveToFile public bool SaveToFile(object Stream, object FilePath) { Application.DoEvents(); // Try ADODB.StreamClass objStream = new ADODB.StreamClass(); //objStream = Interaction.CreateObject("ADODB.Stream"); objStream.Type = ADODB.StreamTypeEnum.adTypeBinary; objStream.Open(); objStream.Write(Stream); objStream.SaveToFile(FilePath.ToString(), ADODB.SaveOptionsEnum.adSaveCreateOverWrite); objStream.Close(); objStream = null; if (Information.Err().Number != 0) { return(false); } else { return(true); } }
static void Main(string[] args) { string filename = @"C:\Users\User1\Desktop\a.eml"; //string content = File.ReadAllText(filename); //dynamic msg = new Message(); //msg.DataSource.Open(filename); //dynamic msg = Activator.CreateInstance(Type.GetTypeFromProgID("CDO.Message")); //msg.Open(filename); //dynamic stream = Activator.CreateInstance(Type.GetTypeFromProgID("ADODB.Stream")); //stream.Open(); //stream.LoadFromFile(filename); //stream.Position = 0; //dynamic msg = Activator.CreateInstance(Type.GetTypeFromProgID("CDO.Message")); //msg.DataSource.OpenObject(stream, "_Stream"); //msg.Attachments.DeleteAll(); //msg.DataSource.SaveToObject(stream, "_Stream"); ////msg.DataSource.Save(); //stream.Position = 0; //stream.SaveToFile(filename, adSaveCreateOverWrite); //stream.Close(); ADODB.StreamClass stream = new ADODB.StreamClass(); stream.Open(); stream.LoadFromFile(filename); CDO.MessageClass msg = new CDO.MessageClass(); msg.DataSource.OpenObject(stream, "_Stream"); msg.Attachments.DeleteAll(); msg.DataSource.SaveToObject(stream, "_Stream"); stream.SaveToFile(filename, ADODB.SaveOptionsEnum.adSaveCreateOverWrite); stream.Close(); System.Runtime.InteropServices.Marshal.FinalReleaseComObject(msg); System.Runtime.InteropServices.Marshal.FinalReleaseComObject(stream); }