Mail Client

Status
Nicht offen für weitere Antworten.

kokoroko

Mitglied
Hallo Zusammen,

ich versuche zur Zeit einen eigenen E-Mail client in Java zu schreiben. Ich hole Mails von einem POP3-Server. Alles laeuft mehr oder weniger super. Nur 2 Probleme konnte ich bis jetzt nicht loesen(vielleicht weil ich ganz neu in java bin).

1. Wie finde ich heraus, welche Nachrichten ich noch nicht vom PO3-Server heruntergeladen habe?

2. Die geholten Mails sollen in einem Verzeichnis gespeichert werden, das so z.B strukturiert ist.


C:\tomcat\webapps\Account_NR\Incoming\User\abgehaengte_datei

P.S. die Leute, die mir nachrichte mit Attachment schicken haben einen Account_NR bei mir zur identifikation. Und unter einem Account_NR koennen mehrere Users sein.
Ich versuche seit 2 Wochen und hab keine Ahnung.
Hat jemand eine Idee?

Danke fuer Ihre Hilfe
 

AlArenal

Top Contributor
zu 1.:
Ohne mich nun mit den Feinheiten des Protokolls POP3 zu beschäftigen (was ich jedoch dir anrate) wäre eine Möglichkeit lokal festzuhalten welchen Timestamp die letzte abgeholte Mail eines jeden Postfachs hatte. Beim nächsten Polling lässt du dir die Liste der Mails im Postfach geben und holst einfach nur die neueren.

zu 2.:
Und wo genau liegt nun dein Problem bei der Programmierung? Sag nun nicht du hast 2 ganze Wochen was probiert und keinen Ansatz mit keiner Zeile Code hinbekommen... ;)
 

kokoroko

Mitglied
Doch habe ich. Es waere einfach fuer mich, wenn die Baumstruktur des Verzeichnis des Provider dasgleich ist wie mein: C:\tomcat\etc... dann haette ich nur eine klasse zum kopieren geschreiben. Aber dies ist nicht der Fall.
Dazu noch kommt dass die mails zu dem richtigem Account_NR in tomcat gespeichert werden.


Nach durchlesen denke ich dass es vielleicht die Methode ObjectInputStream() ein teil der loesung ist aber bin nicht sicher.



Hier ist der code, der die mails holt. Es gibt noch 3 Klasse dazu aber in relevant fuer die frage
Code:
public class MailEmpfang {

    private String emailuser;
    private String emailpassword;
    private String emailserver;
    private String emailprovider;
    
    public MailRetriever(String emailuser,String emailpassword,String emailserver,String emailprovider) {
        this.emailuser=emailuser;
        this.emailpassword=emailpassword;
        this.emailserver=emailserver;
        this.emailprovider=emailprovider;
    }
    
    
    public void getMail() {
        Session session;
        Store store=null;
        Folder folder=null;
        Folder inboxfolder=null;
        
        Properties props=System.getProperties();
        props.setProperty("mail.pop3s.rsetbeforequit","true");
        props.setProperty("mail.pop3.rsetbeforequit","true");
        session=Session.getInstance(props,null);
        session.setDebug(true);
        
        try {
            store=session.getStore(emailprovider);
            store.connect(emailserver,emailuser,emailpassword);
            folder=store.getDefaultFolder();
            if(folder==null) throw new Exception("No default folder");
            inboxfolder=folder.getFolder("INBOX");
            if(inboxfolder==null) throw new Exception("No INBOX");
            inboxfolder.open(Folder.READ_ONLY);
            
            Message[] msgs=inboxfolder.getMessages();
            
            FetchProfile fp=new FetchProfile();
            fp.add("Subject");
            inboxfolder.fetch(msgs,fp);
            
            for(int j=msgs.length-1;j>=0;j--) {
                if(msgs[j].getSubject().startsWith("DigiMemo:")) {
                    setLatestMessage(msgs[j]);
                    break;
                }
            }
           
            inboxfolder.close(false);
            store.close();
            
        } catch (NoSuchProviderException ex) {
            ex.printStackTrace();
        } catch (MessagingException ex) {
            ex.printStackTrace();
        } catch (Exception ex) {
            ex.printStackTrace();
        } finally {
            try {
                if(store!=null) store.close();
            } catch (MessagingException ex) {
                ex.printStackTrace();
            }
        }
    }
    
    public Renderable getLatestMessage() {
        return latestMessage;
    }
    
    private Renderable latestMessage;
    
    void setLatestMessage(Message message) {
        if(message==null) {
            latestMessage=null;
            return;
        }
        
        try {
            if(message.getContentType().startsWith("text/plain")) {
                latestMessage=new RenderablePlainText(message);
            } else {
                latestMessage=new RenderableMessage(message);
            }
        } catch (MessagingException ex) {
            ex.printStackTrace();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
    
    public static void main(String[] args) {
        MailRetriever mr=new MailRetriever(args[0],args[1],args[2],args[3]);
        mr.getMail();
        Renderable msg=mr.getLatestMessage();
        if(msg==null) {
            System.out.println("No valid messages in the mail account");
        } else {
            System.out.println("Subject:"+msg.getSubject());
            System.out.println("Body Text:"+msg.getBodytext());
            System.out.println(msg.getAttachmentCount()+" attachments");
            for(int i=0;i<msg.getAttachmentCount();i++) {
                Attachment at=msg.getAttachment(i);
                System.out.println(at.getFilename()+" "+at.getContent().length+" bytes of ("+at.getContenttype()+")");
            }
        }
    }
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Java Mail und idle() mit zig Emailadressen? Allgemeines EE 59
B Java mail API - möchte nur eine gewisse Anzahl von Emails in die Liste holen Allgemeines EE 3
G Exception beim versenden einer Mail Allgemeines EE 3
T E-Mail in J2EE Plattform Allgemeines EE 6
E Java Mail problem Allgemeines EE 5
K mail-extratoc(javamail) Allgemeines EE 3
L Mail per JPS sender Allgemeines EE 6
clemson mehrere Mail Attachments - JSP Struts Allgemeines EE 7
C Mail von einer Session Bean aus senden Allgemeines EE 2
A mit JavaMail eine html mail versenden? Allgemeines EE 4
LimDul Rest-Client/DTOs aus JSON Ergebnis generieren Allgemeines EE 3
I Client Desktop -> Update in Browser? Allgemeines EE 0
Yamanuchi Glassfish 4 : Client Anzahl restriktieren Allgemeines EE 2
R Web-Applikation mit GWT- und Android-Client Allgemeines EE 0
B Ordner von Client an Server senden Allgemeines EE 2
J Client Request vom Server aus. Allgemeines EE 2
H SQL Daten von Webservice an Client übergeben Allgemeines EE 3
T Client IP ermitteln Allgemeines EE 3
C Objekte aus EJB an Client schicken Allgemeines EE 6
T JMX und ServiceMBean - Zugriff mittels Client Allgemeines EE 2
S Rich Client Application mit Eclipse/WebLogic/EclipseLink/EJB3 Allgemeines EE 2
C JMS Remote Client Allgemeines EE 5
G EJB client Allgemeines EE 4
W JBoss log dependencies aus jbossall-client.jar Allgemeines EE 7
W Client als Jar und die vielen Abhängigkeiten Allgemeines EE 2
P unique ID am Client Allgemeines EE 3
G XML vom Server zum Client Allgemeines EE 4
D Wohin mit Resourcen (Bilder, txt Dateien) im Application Client Allgemeines EE 3
J geschützter Bean zugriff mit einem Rich-Client Allgemeines EE 2
P Client startet viel zu langsam ??? Allgemeines EE 5
MQue Server -> Client zyklische Daten senden Allgemeines EE 20
K Glassfish Application Client Allgemeines EE 4
C EntityBean im GWT-Client Allgemeines EE 2
foobar Client-Jar und JPA-Entities für Remotzugriff Allgemeines EE 12
I Session-Attribute von Client zugänglich? Allgemeines EE 6
M Objektübergabe von Client zum Server Allgemeines EE 11
R EJB Client: Probleme mit der Client.jar Allgemeines EE 2
M "Auto Client-Request" oder Server-Push oder Ajax – Allgemeines EE 2
B Client starten ohne Eclipse Allgemeines EE 4
B Client ausführen mit JBoss v4.2 Allgemeines EE 3
G AnfängerFrage: EJB 3 und Enterprise Client Allgemeines EE 4
M probleme mit client server kommunikation Allgemeines EE 3
K Tomcat als Client nutzen Allgemeines EE 2
M PDF im neuen Browserfenster auf Client-Rechner anzeigen Allgemeines EE 5
F Wie heisst das , was der Client als anfrage sendet? Allgemeines EE 3
N Wie heisst das was der Client beim Http Server anfragt? Allgemeines EE 6
G WebService Client: Parameterübergabe Allgemeines EE 9
N Tomcat -> Binary aus DB lesen und an Browser/Client sende Allgemeines EE 9
J Axis Client - Welcher JARs mitliefern? Allgemeines EE 5
B Java-Client für eBaySOAP-API liefert HTTP(400) Bad Request Allgemeines EE 2
L Web-Client - SessionBean - WebService Allgemeines EE 2
A problem mit client Allgemeines EE 3
M EJB-client: jar-Archiv als Export aus Eclipse läuft nicht Allgemeines EE 5
M Entity Beans: Rückgabe von Collectionen an Client Allgemeines EE 2

Ähnliche Java Themen

Neue Themen


Oben