Content einer email in sql-datenbank speichern

Status
Nicht offen für weitere Antworten.
D

dalco

Gast
hallo,
ich versuche einen kleinen mailbrowser zu schreiben, dazu will ich die bereits abgerufenen mails in einer sql datenbank speichern, es klappt bei der adresse, subjekt und einen datum.
beim inhalt, den ich mit:

messages.getContent();

bekomme, speichert er es nicht in die datenbank, hab das feld schon als VARCHAR oder TEXT genommen, wie kann ich den inhalt speichern, vorallem wenn der inhalt der mail nicht nur aus einfachem text besteht, denn damit geht es.

und mit:

messages.getSentDate();

wollte ich die zeit der letzten mail festhalten, um danach nur alle danach kommenden erneut in die datenbank zu speichern, alle abfragen auf diese zeit hin scheitern aber leider.

hier der teil des speichern:
-------------------------------------------------------------------------
// Connect to the POP3 server
Session session = Session.getDefaultInstance(props, null);
Store store = session.getStore(provider);
store.connect(host, username, password);

// Open the folder
Folder inbox = store.getFolder("INBOX");

if (inbox == null) {
System.out.println("No INBOX");
System.exit(1);
}
inbox.open(Folder.READ_ONLY);

// Get the messages from the server
Message[] messages = inbox.getMessages();

for (int i = 0; i < messages.length; i++) {
Message m = messages;

System.out.println("-------------------------------------------------- MAIL: "+i);
System.out.println( " Von: " + m.getFrom()[0] );
System.out.println("-- BETREFF -- " + messages.getSubject());
System.out.println("-- ZEIT -- " + messages.getSentDate());
System.out.println("-- INHALT -- " + messages.getContent() );



data[0] = messages.getSubject();
data[2] = messages.getSentDate();
data[1] = m.getFrom()[0];


db.connectToDatabase();
con = db.getConnection();
update.doEntrie(con , "INSERT INTO tino (id, fromAdr, subject, sendTime, contend) VALUES (\""
+i+"\",\""
+m.getFrom()[0]+"\",\""
+messages.getSubject()+"\",\""
+messages.getSentDate()+"\",\""
+messages.getContent()+"\")");
db.close();
}

-----------------------------------------------------

danke für eure tipps
mfg
Tino
 
T

tuxedo

Gast
Das ist doch ein JDBC Thema und kein Netzwerk-Thema?

Folgende Fragen stellen sich mir:

1) Wieso benutzt du keine [ code ] [ /code ] Tags?
2) Wieso öffnest du in einer FOR-Schleife X-Mal die DB Verbindung und schließt sie wieder? Vor der Schleife öffnen und danach schließen. Aber nicht immer und immer wieder IN der Schleifen.
3) Was ist "update.doEntrie()"?? Ich hätt's so gemacht (weiß nicht warum du da noch eine extra Klasse für benutzt wenn du da schon mit dem Connection-Objekt rumhantierst ):

Code:
Statement statement = con.createStatement();
int affected = statement.executeUpdate(""INSERT INTO tino (id, fromAdr, subject, sendTime, contend) VALUES (\""
+i+"\",\""
+m.getFrom()[0]+"\",\""
+messages[i].getSubject()+"\",\""
+messages[i].getSentDate()+"\",\""
+messages[i].getContent()+"\")"); 
System.out.println(affected+" Zeilen in die DB eingetragen.");
 
G

Guest

Gast
hi,
das mit dem "code" seh ich jetzt auch, du hast mir leider nicht auf meine frage geantwortet, sondern meinen gleichen code gepostet, das schließen der datenbank ok, und die extra klasse hab ich halt.
beantworte doch bitte die frage, warum ich den mit getContent() fehler bekomme und das nicht in ein TEXT-Feld in der sql datenbank speichern kann.
deine idee ist nur eine andere schreibweise, kümmert sich aber nicht um die frage.
danke
Tino
 
T

tuxedo

Gast
Ich seh in deinen Posts bis dato kein "?".

Aber mal davon abgesehen, das hier könnte eine Frage sein:

wie kann ich den inhalt speichern, vorallem wenn der inhalt der mail nicht nur aus einfachem text besteht

Hab ich dir ja bereits geschrieben, und zwar NICHT mit deinem Code. Meine Fragen hast du übrigens gekonnt ignoriert. find ich nicht so schön für jemanden der Hilfe erwartet und nicht "mitarbeitet".

Der DB ist es schnuppe ob der Mailcontent aus HTML, ASCII oder sonst was besteht. Fakt ist: Es passt in einen String. Und was in einen String passt, das kann man als Text in der DB speichern.

Da bei uns allen hier im Forum die Kristallkugel - die einem sonst immer alles verrät, was der Threadersteller nicht preisgeben kann/will - defekt ist, kann ich dir nicht weiterhelfen. Ohne meine Kristallkugel hab ich keinen Schimmer was das für ein ominöser Fehler sein soll. Aber vielleicht kommst du ja auf den Trichter uns zu verraten was das für ein Fehler ist und welche DB du benutzt.

Also erst die Frage richtig stellen und genug Details liefer, und dann erst "klugscheißen" ;-)
 

Niki

Top Contributor
Was liefert dir getContent zurück? Ich vermute du wirst nicht drum herum kommen den Content als binary in die Datenbank zu schreiben!
 

Niki

Top Contributor
Ich kenn das mail-Protokoll nicht, aber wenn ich Bilder in den Body einfüge, wo werden die dann übermittelt? Ist der Content sicher immer Text?
 
T

tuxedo

Gast
Die JavaMailAPI verrät es uns:

http://java.sun.com/products/javamail/javadocs/javax/mail/Part.html hat gesagt.:
Content:

The data type of the "content" is returned by the getContentType() method. The MIME typing system is used to name data types.
.
.
.
getContentType

java.lang.String getContentType()
throws MessagingException

Returns the Content-Type of the content of this part. Returns null if the Content-Type could not be determined.

The MIME typing system is used to name Content-types.

Returns:
The ContentType of this part
Throws:
MessagingException
See Also:
DataHandler

.
.
.
getContent

java.lang.Object getContent()
throws java.io.IOException,
MessagingException

Return the content as a Java object. The type of the returned object is of course dependent on the content itself. For example, the object returned for "text/plain" content is usually a String object. The object returned for a "multipart" content is always a Multipart subclass. For content-types that are unknown to the DataHandler system, an input stream is returned as the content

This is a convenience method that just invokes the DataHandler's getContent() method

Returns:
Object
Throws:
MessagingException
java.io.IOException - this is typically thrown by the DataHandler. Refer to the documentation for javax.activation.DataHandler for more details.
See Also:
DataHandler.getContent()
 
G

Guest

Gast
hallo,

ich häng dir mal die fehlermeldung an, vielleicht kannst du was damit anfangen, ich denke eben, dass es der datenbank nicht egal ist, ob es nur aus text besteht, einfache text-mails speichert es ab, aber welche mit bildern, wie zb. werbemails von gmx nicht, da kommt es zu folgenden fehlermeldungen:

Code:
com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'lass es und sammel briefmarken", 
naja vielleicht findet sich ja mal zeit drübe' at line 1
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2941)
	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1623)
	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1715)
	at com.mysql.jdbc.Connection.execSQL(Connection.java:3243)
	at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1343)
	at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1260)
	at database.DB_Entrie.doEntrie(DB_Entrie.java:17)
	at mailserver.POP3Client.ReceiveMails(POP3Client.java:82)-------------------------------------------------- MAIL:  1

	at gui.GUIBuilder.<init>(GUIBuilder.java:95)
	at gui.GUIBuilder.getInstance(GUIBuilder.java:66)
	at start.Start.main(Start.java:9)

vielleicht hilft dir das weiter.
vielleicht muss ich mit getContent() alles in einen langen String umwandeln, der evtl. bilder weglässt??
oder klatscht er mir dann alles hintereinander und würde zeilenumbrüche weglassen, kurz, ich lege eine tabelle an mit namen und betreff, wenn ich zb. auf betreff klicke kommt die ganze email, wie zb beim outlook.
dazu sollte der inhalt der mail halt auch so wiedergegeben werden wie er geschrieben wurde und den wollte ich eben in der sql datenbank als großen TEXT feld speichern.

danke Tino
 
T

tuxedo

Gast
Der Fehler sieht danach aus, als ob du ein Zeichen in deinem String hast, welches du maskieren musst. Irgend ein Zeichen scheint da das SQL-Statement ungültig werden zu lassen.

Du kannst nicht jede Mail mit getContent in Text umwandeln. Es gibt in der Tat auch Mails bei denen das nicht geht weil im Content binäre Dateianhänge mit reingewurschtelt sind. Du musst also abhängig von getCOntentType() den Mailinhalt in der DB speichern bzw. den Mailinhalt vorher konvertieren. Ist halt eine Designfrage. Willst du nur die Texte in der DB haben oder alles, inklusive Dateianhänge?

Wenn letzteres, dann wirst du das Objekt, welches getCOntent() zurückliefert serialisieren und tatsächlich als BLOB in der DB speichern müssen. Aber das ist nun wirklich kein Netzwerkthema mehr.

- Alex
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Java 1.4 HTTPClient Content von PutMethod Netzwerkprogrammierung 4
C HTTP Content-Length nicht übermittelt!? Netzwerkprogrammierung 7
C Content aus Website ziehen Netzwerkprogrammierung 4
Hindi93 Content-Handler Netzwerkprogrammierung 9
M Http POST liefert kryptischen Content Netzwerkprogrammierung 4
L30nS RMI Aufruf einer Client-Methode von einem RMI-Server Netzwerkprogrammierung 3
N Link aus einer E-Mail aufrufen Netzwerkprogrammierung 2
N Name eines Attributes aus einem festen String und einer Variablen generieren Netzwerkprogrammierung 5
O HTTP Einloggen auf einer Homepage Netzwerkprogrammierung 8
H Daten auf einer Webseite eintragen Netzwerkprogrammierung 11
Z Debug-Info einer JavaSE Applikation auf Webserver Netzwerkprogrammierung 0
S HTTP Würdet Ihr Euch bei einer intern genutzten Anwendung auf Cookies verlassen? Netzwerkprogrammierung 2
J Hilfe beim programmiern einer App zur Anmeldung im Wlan-Netzwerk Netzwerkprogrammierung 0
C Inhalt einer .JPG Datei in einen OutputStream schreiben? Netzwerkprogrammierung 10
D Überwachen einer SMB-Freigabe bei Änderungen im Dateisystem Netzwerkprogrammierung 0
L FTP Lesen einer Datei vom Server - Aufgehangen Netzwerkprogrammierung 0
M jsf-seite beim hinzufügen einer csv-datei in einen ordner aktualiseren Netzwerkprogrammierung 0
L Ratschlag zur Umsetzung einer client-server-Kommunikation Netzwerkprogrammierung 6
O HTTP Zugriff und Aktionen auf einer Webseite ausführen Netzwerkprogrammierung 9
S Automatischer Login auf einer Webseite Netzwerkprogrammierung 12
D JavaMail: HTML Code einer Mail Netzwerkprogrammierung 9
H Daten an Textfeld einer Webseite schicken Netzwerkprogrammierung 2
D Aus einer URL die Dateien lesen Netzwerkprogrammierung 5
Dit_ RMI RMI-Server und gleichzeitiger Aufruf einer Methode Netzwerkprogrammierung 14
T Ladezeit einer Seite mit HttpURLConnection und Bildern Netzwerkprogrammierung 2
M bild von einer url erzeugen Netzwerkprogrammierung 7
V Quelltaxt einer Website auslesen funktioniert nicht Netzwerkprogrammierung 2
V Angezeigten Text einer Website erfragen Netzwerkprogrammierung 4
P HttpClient - Daten einer Website "unvollständig" Netzwerkprogrammierung 5
A HTTP Download einer Datei mit "Statistiken" Netzwerkprogrammierung 2
S Port auf einer bestimmten IP-Adresse auslesen? Netzwerkprogrammierung 6
S netzwerkprotokoll auf basis einer tcp verbindung erstellen Netzwerkprogrammierung 9
G Kryptische Zeichen beim Auslesen einer Website Netzwerkprogrammierung 11
Ollek Download einer Datei durch SFTP mit Java Netzwerkprogrammierung 12
B Frage zu einer Lösung (RMI) Netzwerkprogrammierung 2
H HTTP Einloggen auf einer HTML (php) Seite Netzwerkprogrammierung 6
P HTTP Problem beim Download von einer Datei Netzwerkprogrammierung 4
L Größe einer Datei auslesen die im Netz liegt Netzwerkprogrammierung 4
DeviAn Über ein Linux Server ein Windows Server nach einer File fragen Netzwerkprogrammierung 6
F Entwicklung einer Software zur Steuerung und Überwachung von Netzwerkgeräten Netzwerkprogrammierung 4
R Versenden einer MIME-Datei per E-Mail [solved] Netzwerkprogrammierung 5
C Problem mit Übertragung einer Klasse in RMI Netzwerkprogrammierung 10
Pithecanthropus Konzeptionelle Ausarbeitung einer synchronen Kommunkation (Server/Client)) Netzwerkprogrammierung 6
A attachment einer Mail speichern Netzwerkprogrammierung 5
C Dateigröße einer Datei im Internet ermitteln Netzwerkprogrammierung 2
J programm zum autom. ausdruck einer webseite Netzwerkprogrammierung 2
E Parameter einer URLConnection Netzwerkprogrammierung 12
G Unvollständiges Laden einer Seite Netzwerkprogrammierung 2
M Rechner einer Domäne auslesen? Netzwerkprogrammierung 3
KNeuhaus (Windows) Authentication VON einer Java-App aus. Netzwerkprogrammierung 2
Rontu Problem beim Übertragen einer Datei Netzwerkprogrammierung 9
M RMI direkte Verbindung mit einer Mysql datenbank Netzwerkprogrammierung 13
T Quelltext einer Website auslesen Netzwerkprogrammierung 3
ven000m Frage aus einer mündl. Prüfung - wer kennt die Antwort? Netzwerkprogrammierung 6
J Funktion zum Maskieren der Sonderzeichen einer URL Netzwerkprogrammierung 2
J Zeilenweises auslesen aus einer Datei über Server Netzwerkprogrammierung 6
C RMI: Problem beim Aufruf einer Methode. Falsch gecastet? Netzwerkprogrammierung 8
D Problem beim holen einer PHP-Seite via HttpClient Netzwerkprogrammierung 19
C IP adresse anhand einer domain adresse auslesen / ermitteln Netzwerkprogrammierung 3
V Einen Eintrag aus einer Zip Datei von einem Server laden Netzwerkprogrammierung 2
N Dateigröße einer Datei auf einem HTTP-/Web-Server. Netzwerkprogrammierung 9
V Zuweisen einer InetAddress mit einem byte Netzwerkprogrammierung 5
D Anmelden an einer Windows-Domäne Netzwerkprogrammierung 2
M Suche Klasse um Paramater zu einer URL hinzuzufügen. Netzwerkprogrammierung 3
B Url-Link aus einer E-Mail aufrufen Netzwerkprogrammierung 2
M Quellcode einer HTML Seite erhalten Netzwerkprogrammierung 2
A Abbruch einer Verbindung erkennen? Netzwerkprogrammierung 3
G Performance einer verteilten RMI-Anwendung Netzwerkprogrammierung 4
B Laden einer *.csv Datei von einem Webserver (http-request) Netzwerkprogrammierung 8
clemson Größe einer Heruntergeladenen Datei Netzwerkprogrammierung 10
O Problem bei Überprüfung und Spliten von einer IP! Netzwerkprogrammierung 2
R Änderung einer Seite (Klasse URL) Netzwerkprogrammierung 2
I IP Adresse des Clients einer Socket Verbindung Netzwerkprogrammierung 2
G Redirects einer HttpURLConnection ermitteln Netzwerkprogrammierung 4
R Email mit Java API Netzwerkprogrammierung 1
L Email versenden mit Java funktioniert nicht, Fehlermeldungen: MessagingException & SocketException Netzwerkprogrammierung 10
S Email via Googlemail versenden Netzwerkprogrammierung 17
I Email mit kyrillischen Zeichen in der Betreffzeile Netzwerkprogrammierung 7
L Attachment wird nicht angezeigt in der Email Netzwerkprogrammierung 3
L JavaMail: Automatisches Email Versand (mehrere Empfänger) Netzwerkprogrammierung 4
O email verschicken Netzwerkprogrammierung 8
W Automatisch Email senden Netzwerkprogrammierung 4

Ähnliche Java Themen

Neue Themen


Oben