EWS - 将电子邮件导入sql数据库

时间:2009-05-21 09:32:55

标签: sql import email exchange-server exchangewebservices

我一直在尝试将电子邮件中的正文导入到SQL 2005数据库的某个字段中,但它一直在丢失格式(回车,制表符等)

无论如何绕过这个?

3 个答案:

答案 0 :(得分:1)

这是我用来删除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","");

答案 1 :(得分:0)

SQL中的字段是什么数据类型?如果您使用的是“文本”字段(nvarchar或类似字段),那么这很可能就是原因。

如果您确实需要完整的电子邮件正文,那么您可能需要将其存储为blob(二进制)字段。这将产生影响(您应该阅读有关在SQL中存储二进制对象的内容),但它将允许您存储消息正文。

大概你有一些很好的理由为什么这些消息需要存储在SQL中,而不是存储在外部(例如在文件系统上),只有SQL中的消息指针?

答案 2 :(得分:0)

我设法找到了问题。我使用的数据集是将值作为字符串传递。我已更改为char并保留所有格式。非常感谢你的帮助。