EWS - импортировать электронную почту в базу данных sql - PullRequest
0 голосов
/ 21 мая 2009

Я пытался импортировать тело из электронных писем в поле в базе данных SQL 2005, но оно теряет форматирование (возврат каретки, вкладки и т. Д.)

В любом случае обойти это?

Ответы [ 3 ]

1 голос
/ 27 июня 2013

Это код, который я использовал, чтобы убрать из электронного письма тело форматирования html и все символы, чтобы вы остались с фактическим содержанием электронной почты. Это похоже на беспорядок, но это работает:

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","");
0 голосов
/ 28 мая 2009

Мне удалось найти проблему. Набор данных, который я использовал, передавал значения в виде строки. Я изменил на char и все форматы сохранены. Большое спасибо за вашу помощь.

0 голосов
/ 21 мая 2009

Какой тип данных, если ваше поле в SQL? Если вы используете текстовое поле (nvarchar или аналогичное), это может быть причиной.

Если вам действительно нужно тело письма, то вам, вероятно, нужно будет сохранить его как двоичное (двоичное) поле. Это будет иметь последствия (вам следует прочитать о хранении двоичного объекта в SQL), но это позволит вам сохранить тело сообщения.

Предположительно, у вас есть веская причина, почему эти сообщения должны храниться в SQL, а не снаружи (например, в файловой системе) только с указателями на сообщения в SQL?

...