private static PurchaseEmail _GenerateHtmlForEmail(string htmlName, string emlFile, string tempFolder, PurchaseEmail currentHtMLEmail)
        {
            Mail oMail = new Mail("TryIt");
            oMail.Load(emlFile, false);

            if (oMail.IsEncrypted)
            {
                try
                {
                    // This email is encrypted, we decrypt it by user default certificate.
                    oMail = oMail.Decrypt(null);
                }
                catch (Exception ep)
                {
                    MessageBox.Show(ep.Message);
                    oMail.Load(emlFile, false);
                }
            }

            if (oMail.IsSigned)
            {
                try
                {
                    // This email is digital signed.
                    EAGetMail.Certificate cert = oMail.VerifySignature();
                    //Console.WriteLine("This email contains a valid digital signature.");
                }
                catch (Exception ep)
                {
                    MessageBox.Show(ep.Message);
                }
            }

            // Parse html body
            string html = oMail.HtmlBody;
            var hdr = new StringBuilder();

            // Parse sender
            hdr.Append("<font face=\"Courier New,Arial\" size=2>");
            hdr.Append("<b>From:</b> " + _FormatHtmlTag(oMail.From.ToString()) + "<br>");

            // Parse to
            MailAddress[] addrs = oMail.To;
            int count = addrs.Length;
            if (count > 0)
            {
                hdr.Append("<b>To:</b> ");
                for (int i = 0; i < count; i++)
                {
                    hdr.Append(_FormatHtmlTag(addrs[i].ToString()));
                    if (i < count - 1)
                    {
                        hdr.Append(";");
                    }
                }
                hdr.Append("<br>");
            }

            // Parse cc
            addrs = oMail.Cc;

            count = addrs.Length;
            if (count > 0)
            {
                hdr.Append("<b>Cc:</b> ");
                for (int i = 0; i < count; i++)
                {
                    hdr.Append(_FormatHtmlTag(addrs[i].ToString()));
                    if (i < count - 1)
                    {
                        hdr.Append(";");
                    }
                }
                hdr.Append("<br>");
            }

            hdr.Append(String.Format("<b>Subject:</b>{0}<br>\r\n", _FormatHtmlTag(oMail.Subject)));

            // Parse attachments and save to local folder
            Attachment[] atts = oMail.Attachments;
            count = atts.Length;
            if (count > 0)
            {
                if (!Directory.Exists(tempFolder))
                    Directory.CreateDirectory(tempFolder);

                hdr.Append("<b>Attachments:</b>");
                for (int i = 0; i < count; i++)
                {
                    Attachment att = atts[i];

                    // this attachment is in OUTLOOK RTF format, decode it here.
                    if (String.Compare(att.Name, "winmail.dat") == 0)
                    {
                        Attachment[] tatts = null;
                        try
                        {
                            tatts = Mail.ParseTNEF(att.Content, true);
                        }
                        catch (Exception ep)
                        {
                            Console.WriteLine(ep.Message);
                            continue;
                        }

                        int y = tatts.Length;
                        for (int x = 0; x < y; x++)
                        {
                            Attachment tatt = tatts[x];
                            string tattname = String.Format("{0}\\{1}", tempFolder, tatt.Name);
                            tatt.SaveAs(tattname, true);
                            hdr.Append(
                            String.Format("<a href=\"{0}\" target=\"_blank\">{1}</a> ",
                                tattname, tatt.Name));
                        }
                        continue;
                    }

                    string attname = String.Format("{0}\\{1}", tempFolder, att.Name);
                    att.SaveAs(attname, true);
                    hdr.Append(String.Format("<a href=\"{0}\" target=\"_blank\">{1}</a> ",
                            attname, att.Name));
                    if (att.ContentID.Length > 0)
                    {

                        // Show embedded images.
                        html = html.Replace("cid:" + att.ContentID, attname);
                    }
                    else if (String.Compare(att.ContentType, 0, "image/", 0,
                                "image/".Length, true) == 0)
                    {

                        // show attached images.
                        html = html + String.Format("<hr><img src=\"{0}\">", attname);
                    }
                }
            }

            var reg = new Regex("(<meta[^>]*charset[ \t]*=[ \t\"]*)([^<> \r\n\"]*)", RegexOptions.Multiline | RegexOptions.IgnoreCase);
            html = reg.Replace(html, "$1utf-8");
            if (!reg.IsMatch(html))
            {
                hdr.Insert(0, "<meta HTTP-EQUIV=\"Content-Type\" Content=\"text-html; charset=utf-8\">");
            }

            // write html to file
            html = hdr.ToString() + "<hr>" + html;

            //Save the html file to the html directory
            var newHtmlLocation = Directory.GetCurrentDirectory();
            newHtmlLocation = String.Format("{0}\\htmlInbox", newHtmlLocation);
            string newFileName = htmlName.Split('\\').Last();
            htmlName = newHtmlLocation + "\\" + newFileName;

            // Parse out song title
            string pattern = "<div style=\"font-family: verdana,arial,helvetica,sans-serif; font-weight: bold;\">(.*)</div>";
            MatchCollection matches = Regex.Matches(html, pattern);

            string songTitle = matches[0].Groups[1].ToString();

            currentHtMLEmail.fileName = newFileName;
            currentHtMLEmail.htmlPath = htmlName;
            currentHtMLEmail.title = songTitle;

            // save html file
            var fs = new FileStream(htmlName, FileMode.Create, FileAccess.Write, FileShare.None);
            byte[] data = System.Text.UTF8Encoding.UTF8.GetBytes(html);
            fs.Write(data, 0, data.Length);
            fs.Close();
            oMail.Clear();

            return currentHtMLEmail;
        }
        private static PurchaseEmail ConvertMailToHtml(string fileName)
        {
            var currentHtMLEmail = new PurchaseEmail();
            try
            {
                int pos = fileName.LastIndexOf(".");
                string mainName = fileName.Substring(0, pos);
                string htmlName = mainName + ".htm";

                string htmlFolder = mainName;
                if (!File.Exists(htmlName))
                {
                    // We haven't generate the html for this email, generate it now.
                   currentHtMLEmail = _GenerateHtmlForEmail(htmlName, fileName, htmlFolder, currentHtMLEmail);

                }

                //Console.WriteLine("Please open {0} to browse your email", htmlName);
            }
            catch (Exception ep)
            {
               MessageBox.Show(ep.Message);
            }
            return currentHtMLEmail;
        }