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) { } }
public static bool SaveWebPageToMHTFile(string url, string filePath) { bool result = false; CDO.Message msg = new CDO.MessageClass(); ADODB.Stream stm = null; try { msg.MimeFormatted = true; msg.CreateMHTMLBody(url, CDO.CdoMHTMLFlags.cdoSuppressNone, "", ""); stm = msg.GetStream(); stm.SaveToFile(filePath, ADODB.SaveOptionsEnum.adSaveCreateOverWrite); msg = null; stm.Close(); result = true; } catch { throw; } finally { //cleanup here } return result; }
public CDO.Message Load(Func<FileInfo, int, ADODB.Stream> openStreamFunc, FileInfo file, int retry) { CDO.Message msg = new CDO.MessageClass(); ADODB.Stream stream = openStreamFunc(file, retry); msg.DataSource.OpenObject(stream, "_Stream"); msg.DataSource.Save(); return msg; }
public static void SaveToMHT(string strOutputFile, string data) { string tmpFileName = string.Format("Export{0}.html", DateTime.Now.Ticks); string strPath = Path.GetTempPath(); if (!Directory.Exists(strPath)) { Directory.CreateDirectory(strPath); } string strFilePath = Path.Combine(strPath, tmpFileName); //Server.MapPath(string.Format("./{0}", m_tmpFile)); using (StreamWriter sw = File.CreateText(strFilePath)) { sw.Write(data); sw.Close(); } string url = "file://" + strFilePath; // GetBaseURL() + m_tmpFile; CDO.MessageClass message = new CDO.MessageClass(); ADODB.Stream stream = null; try { message.CreateMHTMLBody(url, CDO.CdoMHTMLFlags.cdoSuppressNone, "", ""); stream = message.GetStream(); stream.SaveToFile(strOutputFile, ADODB.SaveOptionsEnum.adSaveCreateOverWrite); } catch (Exception) { using (FileStream fs = File.Create(strOutputFile)) { using (BinaryWriter sw = new BinaryWriter(fs)) { sw.Write(new byte[] { 0xFF, 0xFE }); sw.Write(System.Text.Encoding.Unicode.GetBytes(data)); //.Unicode. strHTML.ToCharArray()); //Write(strHTML); sw.Close(); } } } finally { if (stream != null) { stream.Close(); } } if (File.Exists(strFilePath)) { File.Delete(strFilePath); } }
private void Notify(string subject, string textBody) { CDO.MessageClass message = new CDO.MessageClass(); CDO.Configuration config = message.Configuration; config.Fields[CDO.CdoConfiguration.cdoAutoPromoteBodyParts].Value = true; config.Fields[CDO.CdoConfiguration.cdoURLGetLatestVersion].Value = true; string server = m_Settings.GetValue("Email Server"); if (server.Length > 0) { config.Fields[CDO.CdoConfiguration.cdoSendUsingMethod].Value = CDO.CdoSendUsing.cdoSendUsingPort; config.Fields[CDO.CdoConfiguration.cdoSMTPServer].Value = server; config.Fields[CDO.CdoConfiguration.cdoSMTPServerPort].Value = int.Parse(m_Settings.GetValue("Email Port")); string value = m_Settings.GetValue("Email Auth"); CDO.CdoProtocolsAuthentication auth = (CDO.CdoProtocolsAuthentication)Enum.Parse(typeof(CDO.CdoProtocolsAuthentication), value); if (auth != CDO.CdoProtocolsAuthentication.cdoAnonymous) { config.Fields[CDO.CdoConfiguration.cdoSMTPAuthenticate].Value = auth; config.Fields[CDO.CdoConfiguration.cdoSendUserName].Value = m_Settings.GetValue("Email Username"); config.Fields[CDO.CdoConfiguration.cdoSendPassword].Value = m_Settings.GetValue("Email Password"); config.Fields[CDO.CdoConfiguration.cdoSMTPUseSSL].Value = bool.Parse(m_Settings.GetValue("Email UseSSL")); } } else { config.Fields[CDO.CdoConfiguration.cdoSendUsingMethod].Value = CDO.CdoSendUsing.cdoSendUsingPickup; } config.Fields.Update(); message.To = m_Settings.GetValue("Email To"); message.From = m_Settings.GetValue("Email From"); message.ReplyTo = m_Settings.GetValue("Email ReplyTo"); message.Subject = subject; //string createUrl = m_Settings.GetValue("Email CreateUrl"); //if (createUrl.Length > 0) //{ // message.CreateMHTMLBody(createUrl, CDO.CdoMHTMLFlags.cdoSuppressAll, null, null); //} message.TextBody = textBody; message.Send(); Log.WriteLine("Notification sent to " + message.To); }
protected CDO.Message ReadMessage(String emlFileName) { 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(emlFileName); stream.Flush(); msg.DataSource.OpenObject(stream, "_Stream"); msg.DataSource.Save(); return(msg); }
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); }
private static CDO.Message ReadMessageUnCached(String emlFileName) { for (int i = 0; i < maxRetries; i++) { 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(emlFileName); stream.Flush(); msg.DataSource.OpenObject(stream, "_Stream"); msg.DataSource.Save(); return msg; } catch (COMException ex) { if (i + 1 >= maxRetries || ex.HResult != -2146825286) { // Rethrow last time or if it isn't a file lock problem. throw; } } catch (IOException ex) { if (i + 1 >= maxRetries || ex.HResult != -2147024864) { // Rethrow last time or if it isn't a file lock problem. throw; } } System.Threading.Thread.Sleep(100); } throw new InvalidOperationException("Should not arrive here."); }
public static CDO.Message LoadMessage(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); //http://stackoverflow.com/questions/936422/recommendations-on-parsing-eml-files-in-c-sharp //stream.Type = ADODB.StreamTypeEnum.adTypeBinary; // Don't parse UTF8 byte headers stream.LoadFromFile(emlFilePath); stream.Flush(); msg.DataSource.OpenObject(stream, "_Stream"); msg.DataSource.Save(); return msg; } catch (Exception ex) { throw new ApplicationException(string.Format("Could not load message '{0}'. {1}", emlFilePath, ex.Message), innerException: ex); } }
public static CDO.Message LoadMessage(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); //http://stackoverflow.com/questions/936422/recommendations-on-parsing-eml-files-in-c-sharp //stream.Type = ADODB.StreamTypeEnum.adTypeBinary; // Don't parse UTF8 byte headers stream.LoadFromFile(emlFilePath); stream.Flush(); msg.DataSource.OpenObject(stream, "_Stream"); msg.DataSource.Save(); return(msg); } catch (Exception ex) { throw new ApplicationException(string.Format("Could not load message '{0}'. {1}", emlFilePath, ex.Message), innerException: ex); } }
private static CDO.Message ReadMessageUnCached(String emlFileName) { for (int i = 0; i < maxRetries; i++) { 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(emlFileName); stream.Flush(); msg.DataSource.OpenObject(stream, "_Stream"); msg.DataSource.Save(); return(msg); } catch (COMException ex) { if (i + 1 >= maxRetries || ex.HResult != -2146825286) { // Rethrow last time or if it isn't a file lock problem. throw; } } catch (IOException ex) { if (i + 1 >= maxRetries || ex.HResult != -2147024864) { // Rethrow last time or if it isn't a file lock problem. throw; } } System.Threading.Thread.Sleep(100); } throw new InvalidOperationException("Should not arrive here."); }
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); }
public static string ConvertWebPageToMHTString(string url) { string data = String.Empty; CDO.Message msg = new CDO.MessageClass(); ADODB.Stream stm = null; try { msg.MimeFormatted = true; msg.CreateMHTMLBody(url, CDO.CdoMHTMLFlags.cdoSuppressNone, "", ""); stm = msg.GetStream(); data = stm.ReadText(stm.Size); } catch { throw; } finally { //cleanup here } return data; }