2009-05-21 10 views
0

Ich habe versucht, den Körper von E-Mail in ein Feld in einer SQL 2005-Datenbank zu importieren, aber es hält die Formatierung zu verlieren (Zeilenumbrüche, Tabulator, etc.)EWS - Import E-Mail in SQL-Datenbank

Auf jeden Fall des Erhaltens um das herum?

+2

Was ist EWS? Englisch, Walisisch und Scottish Railway Ltd? – Andomar

+0

EWS steht für Exchange Web Services –

Antwort

0

Welchen Datentyp hat Ihr Feld in SQL? Wenn Sie ein "Text" -Feld (nvarchar oder ähnliches) verwenden, ist dies wahrscheinlich die Ursache.

Wenn der E-Mail-Text wirklich intakt sein muss, müssen Sie ihn wahrscheinlich als Blob (Binär) -Feld speichern. Dies hat Auswirkungen (Sie sollten über das Speichern von binären Objekten in SQL nachlesen), aber Sie können den Nachrichtentext speichern.

Vermutlich haben Sie einen guten Grund, warum diese Nachrichten IN SQL und nicht außerhalb (im Dateisystem zum Beispiel) mit nur Zeigern auf die Nachrichten in SQL gespeichert werden müssen?

+0

Warum würde Text Wagenrücklauf und Tabulatorzeichen löschen? Sie sind alle gültige Text- (sogar ASCII-) Zeichen. Nicht vertraut mit SQL Server, aber klingt wie ein Problem mit dem Import-Skript (die nicht erklärt wird), nicht SQL Server an sich. –

+0

Wenn ich in eine Textdatei schreibe oder Code durchtrete, wird das \ r \ n intakt gehalten, aber im SQL-Feld gelöscht. Ich habe versucht, Text und Varchar - kein Glück. Ich musste mit
ersetzen, um den Wagenrücklauf zu behalten, aber jetzt habe ich das Feld in HTML gelesen. Ich werde Martins Rat versuchen. Es muss jedoch einen einfacheren Weg geben (?) –

+0

Sie könnten versuchen, \ r \ n auf einer Webseite anzuzeigen. Aber \ r \ n in HTML tut nichts; es ist nur Leerzeichen. Dies hat wenig mit SQL oder dem Datenbankspeicher zu tun. – Andomar

0

Ich habe es geschafft, das Problem zu finden. Das Dataset, das ich verwendete, übergab die Werte jedoch als Zeichenfolge. Ich habe mich in Char geändert und alle Formate bleiben erhalten. Vielen Dank für Ihre Hilfe.

1

Dies ist der Code, den ich verwendet habe, um einen E-Mail-Körper der HTML-Formatierung und alle Zeichen zu strippen, so dass Sie mit dem eigentlichen E-Mail-Inhalt verlassen werden. Es sieht aus wie ein Durcheinander, aber es funktioniert:

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","");