EWS - import email to sql database

I'm trying to import a body from an email into a SQL 2005 database field, but it keeps losing formatting (carriage returns, tabs, etc.)

Is there anyway to get around this?

0


a source to share


3 answers


This is the code I used to strip the body of the email and all the html formatting and all characters so that you are left with the actual content of the email. It looks like a mess, but it works:



foreach (Item item in findResults.Items)
            {
                MessageBody messageBody = new Microsoft.Exchange.WebServices.Data.MessageBody();
                List<Item> items = new List<Item>();
                if (findResults.Items.Count > 0) // Prevent the exception
                {
                    foreach (Item item2 in findResults)
                    {
                        items.Add(item2);
                    }
                }
                service.LoadPropertiesForItems(items, PropertySet.FirstClassProperties);
                messageBody = item.Body.ToString().Replace("<html dir=", "").Replace("<head>", "").Replace("<meta http-equiv=", "").Replace("content=", "")
                              .Replace("<style type=", "").Replace("</style>", "").Replace("</head>", "").Replace("<body fpstyle=", "").Replace("ocsi=", "")
                              .Replace("<div style=", "").Replace("direction: ltr;font-family: Tahoma;color: #000000;font-size: 10pt;", "").Replace("</div>", "")
                              .Replace("<div>", "").Replace("</body>", "").Replace("</html>", "").Replace("<br>", "").Replace(">", "").Replace("\"Content-Type", "")
                              .Replace("\"text/html; charset=utf-8", "").Replace("\"0", "").Replace("\"", "").Replace("text/css", "")
                              .Replace("id=owaParaStyle", "").Replace("ltr", "").Replace("<meta name=GENERATOR MSHTML 9.00.8112.16470", "").Replace("<style P {", "")
                              .Replace("MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px", "").Replace("<p", "").Replace("</p>", "").Replace("</p", "").Replace("&nbsp;", "")
                              .Replace("<body fPStyle= ", "").Replace("%", "").Replace("<", "").Replace(">", "").Replace("}", "").Replace("\"","").Replace("body fPStyle=1","");

      

+1


a source


What datatype if your field is in SQL? If you are using a "text" field (nvarchar or similar), this may be the reason.

If you really want the email body, then you will probably need to store it as a blob (binary) field. It will have implications (you should read about storing a blob in SQL), but it will allow you to store the body of the message.



Presumably you have a good reason why these messages need to be stored in SQL and not externally (like the filesystem), only pointers to messages in SQL?

0


a source


I managed to find the problem. The dataset I was using was passing values, but as a string. I changed to char and all formats are preserved. Thank you for help.

0


a source







All Articles