Hallo,
ich möchte eine HTML-Mail auslesen, in der wichtige Daten in einer Tabelle stehen. Die Anzahl der Zeilen kann unterschiedlich sein.
Das habe ich soweit geschafft. Das Programm öffnet das Mailpostfach, durchsucht alle eMails in denen im Betreff ein bestimmter
String steht und liest diese bis zu einem Punkt aus.
Leider hört es aus irgendwelchen Gründen mitten in der Tabelle auf, es kommt auch keine Fehlermeldung.
Ich habe mir schon den Source der eMail angeschaut, kann aber nichts ungewöhnliches feststellen.
Da ich mit Eclipse arbeite, bin ich auch schon step by step durchgegangen und irgendwann, beim durchlaufen der Tabelle mit
den Daten, hört er auf und schließt das Postfach ordnungsgemäß.
Das wird in der Console von Eclipse ausgegeben:
Java-Code Schnipsel:
Da ich damit noch keine Erfahrung habe, stehe ich jetzt ganz schön auf dem Schlauch.
Warum durchläuft das Programm die Mail nicht bis zum Ende?
Gibt es evtl. eine bessere Lösung?
Ich danke schon mal Voraus.
Gruß seven
ich möchte eine HTML-Mail auslesen, in der wichtige Daten in einer Tabelle stehen. Die Anzahl der Zeilen kann unterschiedlich sein.
Das habe ich soweit geschafft. Das Programm öffnet das Mailpostfach, durchsucht alle eMails in denen im Betreff ein bestimmter
String steht und liest diese bis zu einem Punkt aus.
Leider hört es aus irgendwelchen Gründen mitten in der Tabelle auf, es kommt auch keine Fehlermeldung.
Ich habe mir schon den Source der eMail angeschaut, kann aber nichts ungewöhnliches feststellen.
Da ich mit Eclipse arbeite, bin ich auch schon step by step durchgegangen und irgendwann, beim durchlaufen der Tabelle mit
den Daten, hört er auf und schließt das Postfach ordnungsgemäß.
Das wird in der Console von Eclipse ausgegeben:
Code:
Nachricht: 25
Von: [xxxxxx@xxxxxxxx.de]
Betreff: Buchungsbestaetigung Buchungsnummer 425041
Gesendet am: Tue Dec 15 16:06:25 CET 2009
Content-Type: multipart/alternative;
boundary="----_=_NextPart_000_0013B6EA.4B27B3EA"
javax.mail.internet.MimeMultipart@edc3a2
Encoding: ISO8859_1
C: RETR 26
S: +OK 35586 byte(s)
X-Message-Delivery: Vj0xLjE7dXM9MDtsPTA7YT0wO0Q9MTtTQ0w9MQ==
X-Message-Status: n:0
X-SID-PRA: xxxx@xxxxxx.de
X-Message-Info: JGTYoYF78jHgIR/d6NreP8xppbXtTv5jqMxc64GbnmqGzMr2ZQgTusit0C5h6SuZcFrWDgSTCmHSYxPsgsjxFg==
Received: from smtp-out-130.synserver.de ([212.40.180.130]) by snt0-mc2-f26.Snt0.xxxxxxx.com with xxxxxx SMTPSVC(6.0.3790.3959);
Tue, 15 Dec 2009 07:06:25 -0800
Received: (qmail 26200 invoked by uid 0); 15 Dec 2009 15:06:23 -0000
X-SynServer-TrustedSrc: 1
X-SynServer-AuthUser: info@xxxxxxx.de
X-SynServer-PPID: 26110
Received: from xxxx01.synserver.de (HELO 192.168.20.7) [217.119.48.193]
by blue-ld-125.synserver.de with SMTP; 15 Dec 2009 15:06:23 -0000
To: xxxx@xxxxxxxxxx.de
From: xxxxx@xxxxxxxxxxx.de
Subject: Buchungsbestaetigung Buchungsnummer 425041
Date: 15 Dec 2009 15:06:25 UT
Priority: normal
X-Priority: 3 (Normal)
Importance: normal
X-Mailer: DvISE by Tobit Software, Germany (0250.444B46464E464A4C4C4E)
X-David-Sym: 0
X-David-Flags: 0
Message-ID: <0013B6EA.4B27B3EA@192.168.20.7>
MIME-Version: 1.0
Content-Type: multipart/alternative;
boundary="----_=_NextPart_000_0013B6EA.4B27B3EA"
Return-Path: xxxx@xxxxxxx.de
X-OriginalArrivalTime: 15 Dec 2009 15:06:25.0642 (UTC) FILETIME=[2BC6A4A0:01CA7D98]
This message is in MIME format. Since your mail reader does not understand
this format, some or all of this message may not be legible.
------_=_NextPart_000_0013B6EA.4B27B3EA
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Diso-8859-1"><style type=3D"text/css"><!--body,td,th { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px;}.Stil1 {font-size: xx-small}.Stil3 {font-size: xx-small; font-weight: bold; }body { margin-left: 10px;}--></style></head><body><div align=3D"center"><table width=3D"600" border=3D"0" style=3D"text-align: left;"> <tr> <td><table border=3D"0"> <tr> <td width=3D"350"> </td> <td width=3D"250"><p align=3D"right"><img src=3D"d:\Daten\xxxx_MessageController\xxxxxx_Booking\xxxxxxxx-testhotel\Logo.gif"><br /> </p></td> </tr> <tr> <td width=3D"350"> </td> <td width=3D"250"><div align=3D"right"><br /> xxxxxxxx, den 15.12.2009</div></td> </tr> </table></td> </tr> <tr> <td> <strong>
Buchungsbestätigung</strong></td> </tr> <tr> <td> </td> </tr> <tr> <td>Hiermit bestätigen wir Ihnen Ihre verbindliche Buchung, die wir unter der <strong><br />Buchungsnummer 425041 </strong>registriert haben. Nachstehend die von Ihnen eingegebenen Buchungsdaten: </FONT></td> </tr> <tr> <td> </td> </tr> <tr> <td><hr size=3D"5" color=3D"#cddaeb" noshade ></td> </tr> <tr> <td><table width=3D"100%" border=3D"0"> <tr> <td width=3D"22%"><span class=3D"Stil3">Anreise:</span></td> <td width=3D"32%">16.12.2009</td> <td width=3D"17%"><span class=3D"Stil3">Abreise:</span></td> <td width=3D"29%">23.12.2009 </td> </tr> <tr> <td><span class=3D"Stil3">Buchungsnummer:</span></td> <td>425041</td> <td><span class=3D"Stil3">Buchungsdatum:</span></td> <td>15.12.2009</td> </tr> <tr> <td><span class=3D"Stil3">Gesamtsumme:</span></td> <td>2,695,00 </td> <td>
</td> <td> </td> </tr> <tr> <td><span class=3D"Stil3">Alle Preise in:</span></td> <td>EURO</td> <td> </td> <td> </td> </tr> <tr> <td><span class=3D"Stil3">Bemerkungen:</span></td> <td colspan=3D"3" valign=3D"top">+++ Anreise nach 18 Uhr +++ Testbemerkung</td> </tr> <tr> <td><span class=3D"Stil3">Anreisezeit ca.:</span></td> <td colspan=3D"3" valign=3D"top">18:00</td> </tr> <tr> <td> </td> <td colspan=3D"3" valign=3D"top"></td> </tr> </table></td> </tr> <tr> <td><hr size=3D"5" color=3D"#cddaeb" noshade></td> </tr> <tr> <td><table cellspacing=3D"0" rules=3D"all" border=3D"1" style=3D"border-collapse:collapse;">
<tr>
<td>Datum</td><td>Anzahl</td><td>Zimmertyp</td><td>Einzelpreis</td><td>Einzelsumme</td>
</tr><tr>
<td>16.12.2009</td><td>1</td><td>Grp1</td><td>77,00</td><td>77,00</td>
</tr><tr>
<td>17.12.2009</td><td>1</td><td>Grp1</td><td>77,00</td><td>77,00</td>
</tr><tr>
<td>18.12.2009</td><td>1</td><td>Grp1</td><td>77,00</td><td>77,00</td>
</tr><tr>
<td>19.12.2009</td><td>1</td><td>Grp1</td><td>77,00</td><td>77,00</td>
</tr><tr>
<td>20.12.2009</td><td>1</td><td>Grp1</td><td>77,00</td><td>77,00</td>
</tr><tr>
<td>21.12.2009</td><td>1</td><td>Grp1</td><td>77,00</td><td>77,00</td>
</tr><tr>
<td>22.12.2009</td><td>1</td><td>Grp1</td><td>77,00</td><td>77,00</td>
</tr><tr>
<td>16.12.2009</td><td>2</td><td>Grp2</td><td>66,00</td><td>132,00</td>
</tr><tr>
<td>17.12.2009</td><td>2</td><td>Grp2</td><td>66,00</td><td>132,00</td>
</tr><tr>
<td>18.12.2009</td><td>2</td><td>Grp2</td><td>66,00</td><td>132,00</td>
</tr><tr>
<td>19.12.2009</td><td>2</td><td>Grp2</td><td>66,00</td><td>132,00</td> <<<----- hier bricht das Programm ab (nach dem Datum)
</tr><tr>
<td>20.12.2009</td><td>2</td><td>Grp2</td><td>66,00</td><td>132,00</td>
</tr><tr>
<td>21.12.2009</td><td>2</td><td>Grp2</td><td>66,00</td><td>132,00</td>
</tr><tr>
<td>22.12.2009</td><td>2</td><td>Grp2</td><td>66,00</td><td>132,00</td>
</tr><tr>
<td>16.12.2009</td><td>4</td><td>Grp4</td><td>44,00</td><td>176,00</td>
</tr><tr>
<td>17.12.2009</td><td>4</td><td>Grp4</td><td>44,00</td><td>176,00</td>
</tr><tr>
<td>18.12.2009</td><td>4</td><td>Grp4</td><td>44,00</td><td>176,00</td>
</tr><tr>
<td>19.12.2009</td><td>4</td><td>Grp4</td><td>44,00</td><td>176,00</td>
</tr><tr>
<td>20.12.2009</td><td>4</td><td>Grp4</td><td>44,00</td><td>176,00</td>
</tr><tr>
<td>21.12.2009</td><td>4</td><td>Grp4</td><td>44,00</td><td>176,00</td>
</tr><tr>
<td>22.12.2009</td><td>4</td><td>Grp4</td><td>44,00</td><td>176,00</td>
</tr>
</table></td> </tr> <tr> <td><hr size=3D"5" color=3D"#cddaeb" noshade></td> </tr> <tr> <td> </td> </tr> <tr> <td><hr size=3D"5" color=3D"#cddaeb" noshade></td> </tr> <tr> <td><table width=3D"100%" border=3D"0"> <tr> <td colspan=3D"3"><p class=3D"Stil3">Ihre Angaben<br /> <br /></p> </td> </tr> <tr> <td width=3D"45%">Frau Prof.</td> <td width=3D"14%"> </td> <td width=3D"41%"> </td> </tr> <tr> <td>Anni</td> <td> </td> <td> </td> </tr> <tr> <td>Schmidt</td> <td><span class=3D"Stil3">Tel:</span></td> <td>0123456789 </td> </tr> <tr> <td>Bergbau GmbH</td> <td><span class=3D"Stil3">Fax:</span></td> <td>1234987654</td> </tr> <tr> <td>Begstr.2</td> <td><span class=3D"Stil3">Mobil:</span></td> <td>0151987553</td> </tr> <tr> <td>84467 München</td>
<td><span class=3D"Stil3">EMail:</span></td> <td>xxxx@xxxxxxxl.de</td> </tr> <tr> <td>Deutschland</td> <td> </td> <td> </td> </tr> <tr> <td> </td> <td> </td> <td> </td> </tr><tr> <td colspan=3D"2"></td> <td></td> </tr><tr> <td colspan=3D"2"> </td> <td> </td> </tr><tr> <td colspan=3D"3"></td> </tr><tr> <td colspan=3D"3"></td> </tr ></table></td> </tr> <tr> <td><hr size=3D"5" color=3D"#cddaeb" noshade></td> </tr> <tr> <td><table width=3D"100%" border=3D"0"> <tr> <td colspan=3D"3"><p class=3D"Stil3">Ihr Gastgeber<br /> <br /></p> </td> </tr> <tr> <td width=3D"45%">xxx-xxxx Testhotel</td> <td width=3D"14%"><span class=3D"Stil3">Tel:</span></td> <td width=3D"41%">03 51 25 44 1-0 </td> </tr> <tr> <td>
xxxxxxxxx 22</td> <td><span class=3D"Stil3">Fax:</span></td> <td>xxxxx xxx xxx</td> </tr> <tr> <td>111111 xxxxx</td> <td><span class=3D"Stil3">EMail:</span></td> <td>xxxx@xxxxxxxx.de</td> </tr> <tr> <td>Deutschland</td> <td> </td> <td> </td> </tr> <tr> <td> </td> <td> </td> <td> </td> </tr> <tr> <td colspan=3D"3"><br></td> </tr> <tr> <td colspan=3D"3"> </td> </tr> </table></td> </tr> <tr> <td><hr size=3D"5" color=3D"#cddaeb" noshade></td> </tr> <tr> <td><p>Eventuelle Rückfragen richten Sie bitte direkt an Ihren Gastgeber.<br /> Diese E-Mail wurde automatisch erzeugt. Bitte antworten Sie daher nicht auf diese E-Mail.<br> Um Ihren Gastgeber zu kontaktieren, nutzen die bitte die EMail Adresse des Gastgebers.</p> </td> </tr> <tr> <td>
.
AGB
.
------------------------------------------------------------------------</p></div>'<br /> <span class=3D"Stil3">Stornofristen</span><br /> <table cellspacing=3D"0" rules=3D"all" border=3D"1"
</tr>
</table></td> </tr></table></div></body></html>
------_=_NextPart_000_0013B6EA.4B27B3EA--
Java-Code Schnipsel:
Java:
Object content = m.getContent();
if (content instanceof String) {
body = (String) content;
} else if (content instanceof Multipart) {
Multipart mp = (Multipart) content;
Part part = m;
int anz = 0;
for (int j = 0; j < mp.getCount(); j++) {
part = mp.getBodyPart(j);
//StringBuffer readBuffer = new StringBuffer();
MimeBodyPart mimePart = (MimeBodyPart) part;
final StringBuilder contentSB = new StringBuilder();
InputStream is = mp.getBodyPart(j).getInputStream();
InputStreamReader isr = new InputStreamReader(is, Charset.forName("iso-8859-1"));
BufferedReader br = new BufferedReader(isr);
HTMLEditorKit htmlKit = new HTMLEditorKit();
HTMLDocument htmlDoc = (HTMLDocument) htmlKit
.createDefaultDocument();
HTMLEditorKit.Parser parser = new ParserDelegator();
HTMLEditorKit.ParserCallback callback = htmlDoc
.getReader(0);
parser.parse(br, callback, true);
HTMLDocument.Iterator iterator = htmlDoc
.getIterator(HTML.Tag.CONTENT);
for (iterator = htmlDoc.getIterator(HTML.Tag.CONTENT);
iterator.isValid(); iterator.next()) {
int startOffset = iterator.getStartOffset();
int endOffset = iterator.getEndOffset();
int length = endOffset - startOffset;
String text = htmlDoc.getText(startOffset, length);
arrMail.add(text);
}
Da ich damit noch keine Erfahrung habe, stehe ich jetzt ganz schön auf dem Schlauch.
Warum durchläuft das Programm die Mail nicht bis zum Ende?
Gibt es evtl. eine bessere Lösung?
Ich danke schon mal Voraus.
Gruß seven