Impressum · Kontakt · Hilfe
Besucher online · Mitglieder



Portal > Foren > Java > Allgemeine Java-Programmierung > E-Mails archivieren
Antwort
 
Themen-Optionen
Alt 23.12.2007, 12:18   Nach oben    #1
ProgrammierGenie
Neuer Benutzer
 
Registriert seit: 29.12.2005
Beiträge: 1
Standard E-Mails archivieren

Hallo,
ich habe bei Yahoo! Mail einen Account mit etwa 4000 E-Mails. Die meisten Davon haben irgendwelche Anhänge. Die E-Mails die nur Text enthalten, kann ich problemlos herunterladen und in txt-Dateien speichern.
Hier mal der Code meiner Funktion:
Code:
public static void getMail( String host, String user, String passwd )
    throws Exception
  {
    Session session = Session.getDefaultInstance( new Properties() );
    Store store = session.getStore( "pop3" );
    store.connect( host, user, passwd );
    Folder folder = store.getFolder( "INBOX" );
    folder.open( Folder.READ_ONLY );
    if(folder.getMessageCount() != 0){
      Message message[] = folder.getMessages();
      for (int i = 0; i < message.length; i++) {
        Message m = message[i];
        fileWrite("mail/" + Integer.toString(i) + ".txt",
                  m.getContent().toString());
      }
    }
}
Die E-Mails, die aber einen Anhang haben lassen sich nicht so einfach speichern. Bei diesen E-Mails wird in die txt-Datei zum Beispiel:
Code:
javax.mail.internet.MimeMultipart@1808199
geschrieben.
Weiß vielleicht jemand wie man den Text von E-Mails mit Anhang ausliest und den Anhang herunterladen kann?
ProgrammierGenie ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 23.12.2007, 12:43   Nach oben    #2
$traight-$hoota
Erfahrener Benutzer
 
Benutzerbild von $traight-$hoota
 
Registriert seit: 15.09.2005
Ort: Königreich Flieden
Beiträge: 491
Standard

Zitat:
Zitat von JavaMail API: Part.getContent()
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
Folglich solltest du zunächst mit m.getContentType() überprüfen, ob es sich um eine reine Textdatei handelt (text/plain), dann kannst du wie bisher einfach den String verwenden. Wenn der Datentype aber multipart ist, gibt getContent() ein MultiPart-Objekt zurück. Da musst du dann wieder jeden einzelnen BodyPart durchgehen und den dann ausgeben.
Am besten schreibst du eine einfache Funktion, die ein Part-Objekt durchgeht:
java Code:
  1. public static void processPart(Part part)
  2.     throws Exception{
  3.     if(part.getContentType().equals("text/plain")){
  4.         write(part.toString());
  5.     }else if(part.getContentType().equals("multipart")){
  6.         MultiPart mp = (MultiPart) part.getContent();
  7.         for(int i = 0; i < mp.getCount(); i++){
  8.             processPart(mp.getBodyPart(i));
  9.         }
  10.     }else{
  11.         // content ist (vermutlich) ein Stream *gg*
  12.         InputStream s = (InputStream) part.getContent();
  13.         write(s);
  14.     }
  15. }
so, oder so ähnlich sollte es funktioniern (is nicht getestet).
__________________
Weißt Bescheid - Scheiß wie weit
$traight-$hoota ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.
Trackbacks are An
Pingbacks are An
Refbacks are Aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[thunderbird] manuell als SPAM deklarierte Mails automatisch verschieben lassen Jann Hendrik Tools, Server, Betriebssysteme 13 13.12.2007 13:15
automatisches Archivieren flupsi PHP-Programmierung 4 19.03.2006 15:09
Mails empfangen / versenden "Access to default session denied" Robinson Allgemeine Java-Programmierung 0 14.12.2005 15:11


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:39 Uhr.

Nach oben
Wir nutzen das Zend Framework, vBulletin (vBulletin v3.7.2, Copyright ©2000-2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.0.0) und vBSEO.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44