JavaMail liefert Datenmüll

Status
Nicht offen für weitere Antworten.

Audio Anarchy

Aktives Mitglied
Hallo Freunde,

wenn ich versuche meine empfangene Email euf einer JEditorPane anzuzeigen, bekomme ich sowas angezeigt:


@font-face { font-family: Cambria Math; } @font-face { font-family: Calibri; } @font-face { font-family: Tahoma; } @font-face { font-family: Consolas; } @font-face { font-family: Verdana; } @page Section1 {size: 612.0pt 792.0pt; margin: 70.85pt 70.85pt 2.0cm 70.85pt; } P.MsoNormal { FONT-SIZE: 11pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Calibri","sans-serif" } LI.MsoNormal { FONT-SIZE: 11pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Calibri","sans-serif" } DIV.MsoNormal { FONT-SIZE: 11pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Calibri","sans-serif" } A:link { COLOR: blue; TEXT-DECORATION: underline; mso-style-priority: 99 } SPAN.MsoHyperlink { COLOR: blue; TEXT-DECORATION: underline; mso-style-priority: 99 } A:visited { COLOR: purple; TEXT-DECORATION: underline; mso-style-priority: 99 } SPAN.MsoHyperlinkFollowed { COLOR: purple; TEXT-DECORATION: underline; mso-style-priority: 99 } P.MsoAcetate { FONT-SIZE: 8pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Tahoma","sans-serif"; mso-style-priority: 99; mso-style-link: "Sprechblasentext Zchn" } LI.MsoAcetate { FONT-SIZE: 8pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Tahoma","sans-serif"; mso-style-priority: 99; mso-style-link: "Sprechblasentext Zchn" } DIV.MsoAcetate { FONT-SIZE: 8pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Tahoma","sans-serif"; mso-style-priority: 99; mso-style-link: "Sprechblasentext Zchn" } SPAN.SprechblasentextZchn { FONT-FAMILY: "Tahoma","sans-serif"; mso-style-priority: 99; mso-style-link: Sprechblasentext; mso-style-name: "Sprechblasentext Zchn" } SPAN.E-MailFormatvorlage19 { COLOR: windowtext; FONT-FAMILY: "Calibri","sans-serif"; mso-style-type: personal } SPAN.E-MailFormatvorlage20 { COLOR: #1f497d; FONT-FAMILY: "Calibri","sans-serif"; mso-style-type: personal-reply } .MsoChpDefault { FONT-SIZE: 10pt; mso-style-type: export-only } DIV.Section1 { page: Section1 }

Wie bekomme ich diesen Datenmüll weg? der Rest der Email wird ganz normal angezeigt.

Der Code der das liefert:

Code:
/**
     * Return the primary text content of the message.
     */
    private String getText(Part p) throws
            MessagingException, IOException {
        //if (p.isMimeType("text/*")) {
        if (p.isMimeType("text/html")) { 
            String s = (String) p.getContent();
            mailPane.setEditable(false);
            mailPane.setContentType("text/html");
            mailPane.setText("<html>" + s + "</html>");
            return s;
        }      
        if (p.isMimeType("text/plain")) { 
            String s = (String) p.getContent();
            mailPane.setEditable(false);
            mailPane.setContentType("text");
            mailPane.setText(s);
            return s;
        }
        if (p.isMimeType("multipart/alternative")) {
            // prefer html text over plain text
            Multipart mp = (Multipart) p.getContent();
            String text = null;
            for (int i = 0; i < mp.getCount(); i++) {
                Part bp = mp.getBodyPart(i);
                if (bp.isMimeType("text/plain")) {
                    if (text == null) {
                        text = getText(bp);
                        mailPane.setContentType("text");
                        mailPane.setText(text);
                    }
                    continue;
                } else if (bp.isMimeType("text/html")) {
                    String s = getText(bp);
                    if (s != null) {
                        mailPane.setEditable(false);
                        mailPane.setContentType("text/html");
                        mailPane.setText("<html>" + s + "</html>");
                               
                        return s;
                                
                    }
                } else {
                    return getText(bp);
                }
            }
            return text;
        } else if (p.isMimeType("multipart/*")) {
            Multipart mp = (Multipart) p.getContent();
            for (int i = 0; i < mp.getCount(); i++) {
                String s = getText(mp.getBodyPart(i));
                if (s != null) {
                    mailPane.setEditable(false);
                    mailPane.setContentType("text/html");
                    mailPane.setText("<html>" + s + "</html>");
                    System.out.println(s); 
                    return s;
                }
            }
        }
        
        return null;    
    }
 

HoaX

Top Contributor
das wird wohl ein html-part sein den du da ausliest und den JEditorPane nicht richtig anzeigt. ohne die originalmail zu kennen kann man da nicht viel zu sagen.
ich hab selbst schon die javamail verwendet und damit mails in text und anhänge und termine zerlegt. sowas wie du schhreibst kam da bei mir aber nie raus, auch bei html nicht. lad die mail doch mal als .eml irgendwo hoch dass wir die anschaun können
 

Audio Anarchy

Aktives Mitglied
Vielen Dank dass Ihr Euch die Zeit dafür nehmt.


Hier die *.eml Datei

Email


und hier ein Screenshot

email.jpg
 
T

tuxedo

Gast
LOL...

Problem ist nicht der "Müll", sondern das verwendete Mailprogramm ;-) Outlook ist ja bekannt dafür dass es ziemlich viel Overhead bei HTML Mails erzeugt.

Im Mail-Quellcode ist HTML mittels "Content-Type" vom Text getrennt:

------=_NextPart_000_0009_01C94A2C.46660F80
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

=20

_____ =20

Von: Daniel Tunjic [mailto:tunjic@magenta-immo.de]=20
Gesendet: Mittwoch, 19. November 2008 09:49
An: 'daniel.tunjic@googlemail.com'
Betreff: WG: Z.H. Herrn XXX - Problem mit den Daten f=FCr Herrn XXX


=20

Das ist eine Weitergeleitete Email=20

Und danach kommt der HTML Krempel:

------=_NextPart_000_0009_01C94A2C.46660F80
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML xmlns=3D"http://www.w3.org/TR/REC-html40" xmlns:v =3D=20
"urn:schemas-microsoft-com:vml" xmlns:eek: =3D=20
"urn:schemas-microsoft-com:eek:ffice:eek:ffice" xmlns:w =3D=20
"urn:schemas-microsoft-com:eek:ffice:word" xmlns:x =3D=20
"urn:schemas-microsoft-com:eek:ffice:excel" xmlns:p =3D=20
....
ganz viel html zeug
....

Entweder die Mail-API ist im Stande nach text/plain zu filtern (keine ahnung, hab die API bisher nicht benutzt), oder du musst den Sourcecode der Mail selbst durchgehen und und den text/plain Teil rausnehmen.

- Alex
 

Murray

Top Contributor
Eigentlich wird aber doch auch der HTML-Teil in der JEditorPane ganz vernünftig angezeigt - offenbar wird das zweite STYLE-Tag aber nicht richtig ausgewertet und als Teil des Body angesehen (obwohl es doch im Head steht). Wo aber nun der Fehler liegt (ob Outlook hier ungültiges HTML produziert, oder ob die JEditorPane das nur nicht richtig darstellt ), weiß ich nicht (bin kein HTML-Experte), aber letztendlich ist das wohl auch egal, denn ändern lässt sich beides nicht so richtig.
Also entweder - wie Alex schreibt - nur den Text anzeigen, oder aber versuchen, den HTML-Anteil irgendwie zu korrigieren (was a) nicht ganz einfach sein wird und b) auch fachlich fragwürdig ist - sollte man eine Mail vor der Anzeige irgendwie verändern?)
 

Audio Anarchy

Aktives Mitglied
Oh man, ich habe sicher schon 20 verschiedene E-Mails (sowohl Text als auch HTML) in meiner EditoPane korrekt angezeigt bekommen. Nur die von diesem Absender eben nicht. Ich weiss aber nicht was an dieser anders sein soll als an den anderen. Schliesslich wird diese ja auch korrekt von Outlook und Googlemail usw. angezeigt. Dass Outlook zuviel Overhead produziert kann schon sein, aber ich habe leider keinen Einfluss darauf welche Mailclients die Leute benutzen.

Vielleicht hat noch jemand eine Idee wie ich den oberen Part nicht angezeigt bekomme.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Javamail Gesendet ordner Java Basics - Anfänger-Themen 1
M Javamail installieren Java Basics - Anfänger-Themen 2
C JavaMail funktioniert nicht immer Java Basics - Anfänger-Themen 8
M javamail android app Java Basics - Anfänger-Themen 3
S JavaMail API E-Mail versenden Probleme Java Basics - Anfänger-Themen 5
B Problem beim Email versenden mit Javamail Java Basics - Anfänger-Themen 5
L JavaMail und mehrere Anhänge Java Basics - Anfänger-Themen 4
D Javamail - Absender-Namen einfügen? Java Basics - Anfänger-Themen 2
F Javamail Java Basics - Anfänger-Themen 5
M Javamail - AOL-IMAP-Postfach abholen Java Basics - Anfänger-Themen 8
G JavaMail: Unrecognized SSL message, plaintext connection? Java Basics - Anfänger-Themen 3
H JavaMail: Beim Versenden tritt ein Fehler auf! Java Basics - Anfänger-Themen 4
G JavaMail Java Basics - Anfänger-Themen 2
G LIstener bei JavaMail Java Basics - Anfänger-Themen 2
M javamail: versch. Postfächer auslesen Java Basics - Anfänger-Themen 6
D JavaMail Java Basics - Anfänger-Themen 4
M javamail: HTML-Tags aus content eliminieren Java Basics - Anfänger-Themen 2
M Javamail mit Eclipse? Java Basics - Anfänger-Themen 2
M Javamail: Mail als separate Datei speichern? Java Basics - Anfänger-Themen 6
M Javamail: Datumsformat - Frage Java Basics - Anfänger-Themen 2
M Javamail - Anhang speichern Java Basics - Anfänger-Themen 2
G Problem mit javamail Java Basics - Anfänger-Themen 3
G JavaMail funzt nur mit Adressen die ich vorher abgerufen hab Java Basics - Anfänger-Themen 3
H JavaMail Java Basics - Anfänger-Themen 5
D JavaMail Java Basics - Anfänger-Themen 9
P JavaMail API installieren Java Basics - Anfänger-Themen 4
L JavaMail-Fehler: "Helo command rejected" Java Basics - Anfänger-Themen 5
L JavaMail: javax.mail wird nicht gefunden Java Basics - Anfänger-Themen 2
F JavaMail Java Basics - Anfänger-Themen 2
A Anhänge mit Javamail Java Basics - Anfänger-Themen 8
G Rekursive Methode liefert augenscheinlich keinen boolean-Wert zurück. Java Basics - Anfänger-Themen 4
JavaClap "Bruchrechner" liefert Fehler/keine Ausgabe bei Addition und Subtraktion Java Basics - Anfänger-Themen 0
B MySQL (jdbc) -> connection liefert NULL Java Basics - Anfänger-Themen 3
J HashSet Methode contains liefert false (hash Methode überschrieben) Java Basics - Anfänger-Themen 3
M Methoden while liefert nur den ersten Datensatz Java Basics - Anfänger-Themen 12
G Methode liefert "Min@15db9742" als Ausgabe Java Basics - Anfänger-Themen 2
Joker4632 Klassen BigDecimal Multiplikation liefert nicht erwarteten Wert Java Basics - Anfänger-Themen 6
J Kosinussatz liefert falschs Ergebnis Java Basics - Anfänger-Themen 2
J Berechnung liefert falsches Ergebnis Java Basics - Anfänger-Themen 2
E Methoden Methode liefert keinen Wert zurück Java Basics - Anfänger-Themen 16
Anfänger2011 file.isDirectory() liefert falschen Wert!? Java Basics - Anfänger-Themen 1
B Rechnung ohne Klammer liefert komisches Ergebniss Java Basics - Anfänger-Themen 3
D Operatoren IF Abfrage liefert falsches Ergebnis Java Basics - Anfänger-Themen 4
U ArrayList.get() liefert falsches Ergebnis Java Basics - Anfänger-Themen 4
L replaceAlll liefert Exception... Java Basics - Anfänger-Themen 3
M System.getProperty("java.vm.version") liefert build-Version Java Basics - Anfänger-Themen 4
R Hashset.add(Array) liefert immer true? Java Basics - Anfänger-Themen 23
F charAt-Methode liefert falsche Unicode-Werte Java Basics - Anfänger-Themen 8
P Map liefert bei put null als Ergebnis Java Basics - Anfänger-Themen 6
A contains bzw. indexOf liefert keine Treffer? Java Basics - Anfänger-Themen 3
M Problem mit getter, liefert nur alte Werte Java Basics - Anfänger-Themen 6
F arraylist.get() liefert Speicheradresse?!? Java Basics - Anfänger-Themen 2
R If-Abfrage liefert false zurück, wieso ? Java Basics - Anfänger-Themen 20
L Woerterbuch liefert immer "null" Java Basics - Anfänger-Themen 41
R warum liefert ein und dieselbe funktion nicht dasselbe return?? Java Basics - Anfänger-Themen 7
3 Collections containsKey() liefert false obwohl equals() true liefert Java Basics - Anfänger-Themen 6
M isHidden() von java.io.File liefert immer true in Windows Java Basics - Anfänger-Themen 3
B SQL Recortset liefert nur eine Zeile Java Basics - Anfänger-Themen 4
Raidri Pattern liefert false Java Basics - Anfänger-Themen 9
J Datentypen Textfield.getText() liefert keinen String Java Basics - Anfänger-Themen 4
C warum liefert equals kein TRUE Java Basics - Anfänger-Themen 12
Y System.console() liefert immer null zurück. Java Basics - Anfänger-Themen 6
X Datentypen Vergleichsmethode liefert immer null Java Basics - Anfänger-Themen 3
J Batch Datei liefert CLASS NOT FOUND Warum !? Java Basics - Anfänger-Themen 11
O Runden - x/100 liefert long zurück Java Basics - Anfänger-Themen 7
L Enumeration paramNames liefert Werte durcheinander Java Basics - Anfänger-Themen 13
S atan liefert falsches Ergebnis Java Basics - Anfänger-Themen 6
C HashMap liefert HashMap zurück - incompatible types Java Basics - Anfänger-Themen 2
G static array liefert falsche Werte zurück Java Basics - Anfänger-Themen 2
H GPS über ser. Schnittst. liefert teilweise Sonderzeichen Java Basics - Anfänger-Themen 3
G Parser liefert StackOverflow error Java Basics - Anfänger-Themen 6
G Einfache Berechnung liefert falsches Ergebnis Java Basics - Anfänger-Themen 2
H -Djava.library.path liefert in der Konsole "ClassNotFou Java Basics - Anfänger-Themen 4
Z DB-Abfrage liefert alte Werte Java Basics - Anfänger-Themen 11
M Mouse Listener liefert das ergebnis 2 mal! Java Basics - Anfänger-Themen 2
B equals() der Klasse Objects liefert unerwartetes Ergebnis Java Basics - Anfänger-Themen 17
P JPanel.getWidth() liefert immer 0 Java Basics - Anfänger-Themen 6
S DAY_OF_WEEK liefert immer gleichen Wert Java Basics - Anfänger-Themen 6
A byte.toString() -> Datenmüll Java Basics - Anfänger-Themen 52

Ähnliche Java Themen

Neue Themen


Oben