Ejemplo n.º 1
0
        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)
            { }
        }
Ejemplo n.º 2
0
        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;
        }
Ejemplo n.º 3
0
 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;
 }
Ejemplo n.º 4
0
    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);
        }
    }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
 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);
 }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
 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);
              }
        }
Ejemplo n.º 10
0
        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);
            }
        }
Ejemplo n.º 11
0
 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.");
 }
Ejemplo n.º 12
0
        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);
        }
Ejemplo n.º 13
0
        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;
        }