forked from IF-LK-2020/mymail
Emails abrufbar
This commit is contained in:
94
MyMail.java
94
MyMail.java
@@ -75,7 +75,7 @@ public class MyMail {
|
|||||||
*/
|
*/
|
||||||
private boolean connectToServer() {
|
private boolean connectToServer() {
|
||||||
// TODO: Connection-Objekt initialisieren
|
// TODO: Connection-Objekt initialisieren
|
||||||
con = null;
|
con = new Connection(POP3_SERVER,POP3_PORT);
|
||||||
|
|
||||||
// Begrüssungsnachricht des Servers empfangen und prüfen
|
// Begrüssungsnachricht des Servers empfangen und prüfen
|
||||||
String mes = con.receive();
|
String mes = con.receive();
|
||||||
@@ -110,9 +110,24 @@ public class MyMail {
|
|||||||
|
|
||||||
// TODO: Implementieren
|
// TODO: Implementieren
|
||||||
// USER Kommando senden und Antwort prüfen
|
// USER Kommando senden und Antwort prüfen
|
||||||
|
con.send("USER "+POP3_USER);
|
||||||
|
mes = con.receive();
|
||||||
|
if( mes == null || mes.startsWith("-ERR") ) {
|
||||||
|
// Keine "positive response" :-(
|
||||||
|
// Setze einen Fehler und gib "false" zurück.
|
||||||
|
lastError = "login fehlgeschlagen";
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
// PASS Kommando senden und Antwort prüfen
|
// PASS Kommando senden und Antwort prüfen
|
||||||
|
con.send("PASS "+POP3_PASS);
|
||||||
|
mes = con.receive();
|
||||||
|
if( mes == null || mes.startsWith("-ERR") ) {
|
||||||
|
// Keine "positive response" :-(
|
||||||
|
// Setze einen Fehler und gib "false" zurück.
|
||||||
|
lastError = "login fehlgeschlagen";
|
||||||
|
return false;
|
||||||
|
}
|
||||||
// Anmeldung war erfolgreich
|
// Anmeldung war erfolgreich
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -132,12 +147,26 @@ public class MyMail {
|
|||||||
|
|
||||||
// TODO: Implementieren
|
// TODO: Implementieren
|
||||||
// Sende den STAT Befehl
|
// Sende den STAT Befehl
|
||||||
|
con.send("STAT");
|
||||||
// Prüfe, ob die Antwort ein Fehler ist
|
// Prüfe, ob die Antwort ein Fehler ist
|
||||||
|
mes = con.receive();
|
||||||
|
if( mes == null || mes.startsWith("-ERR") ) {
|
||||||
|
// Keine "positive response" :-(
|
||||||
|
// Setze einen Fehler und gib "false" zurück.
|
||||||
|
lastError = "Mails konnten nich abgerufen werden";
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
// Schneide den Teil zwischen den Leerzeichen aus
|
// Schneide den Teil zwischen den Leerzeichen aus
|
||||||
// Finde die Leerzeichen mit indexOf(" ")
|
// Finde die Leerzeichen mit indexOf(" ")
|
||||||
|
|
||||||
// Ermittele den Text mit substring(von, bis)
|
// Ermittele den Text mit substring(von, bis)
|
||||||
|
System.out.println("1| "+mes);
|
||||||
|
mes = mes.substring(mes.indexOf(" ")+1);
|
||||||
// Wandele mit Integer.parseInt() in eine Zahl um
|
// Wandele mit Integer.parseInt() in eine Zahl um
|
||||||
return 0;
|
System.out.println("2| "+mes);
|
||||||
|
mes = mes.substring(0,mes.indexOf(" "));
|
||||||
|
System.out.println("3| "+ mes);
|
||||||
|
return Integer.parseInt(mes);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -159,13 +188,21 @@ public class MyMail {
|
|||||||
|
|
||||||
// Anmeldung durchführen und prüfen
|
// Anmeldung durchführen und prüfen
|
||||||
// Hinweis: Nutze die login() Methode
|
// Hinweis: Nutze die login() Methode
|
||||||
|
boolean loggedin = login();
|
||||||
|
if( !loggedin ) {
|
||||||
|
// Letzten Fehler anzeigen
|
||||||
|
gui.setError(lastError);
|
||||||
|
return; // Abbrechen
|
||||||
|
}
|
||||||
|
|
||||||
// Anzahl Mails auf dem Server abfragen
|
// Anzahl Mails auf dem Server abfragen
|
||||||
int mailCount = 0;
|
int mailCount = 0;
|
||||||
|
mailCount = getMessageCount();
|
||||||
|
//if(lastError != null) gui.setError(lastError);
|
||||||
// Abruf der Mails nach fortlaufender Nummer
|
// Abruf der Mails nach fortlaufender Nummer
|
||||||
for( int i = 1; i <= mailCount; i++ ) {
|
for( int i = 1; i <= mailCount; i++ ) {
|
||||||
// Mail abrufen (nutze getMail(int))
|
// Mail abrufen (nutze getMail(int))
|
||||||
|
gui.addMailToList(getMail(i));
|
||||||
// Mail der GUI hinzufügen (nutze gui.addMailToLost(Mail))
|
// Mail der GUI hinzufügen (nutze gui.addMailToLost(Mail))
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -199,11 +236,19 @@ public class MyMail {
|
|||||||
String mes = ""; // Speicher für Antworten des Servers
|
String mes = ""; // Speicher für Antworten des Servers
|
||||||
|
|
||||||
// Prüfen, ob es eine Mail mit der Nummer pNumber gibt
|
// Prüfen, ob es eine Mail mit der Nummer pNumber gibt
|
||||||
|
con.send("retr " + pNumber);
|
||||||
|
mes = con.receive();
|
||||||
// Mail abrufen (RETR)
|
// Mail abrufen (RETR)
|
||||||
|
String subject ="";
|
||||||
|
String from ="";
|
||||||
|
String sender="";
|
||||||
|
String date ="";
|
||||||
|
String text = "";
|
||||||
|
boolean header = true;
|
||||||
|
|
||||||
while( !mes.equals(".") ) {
|
while( !mes.equals(".") ) {
|
||||||
// Text der Mail parsen
|
// Text der Mail parsen
|
||||||
|
|
||||||
// Verarbeite die Metadaten, vor allem:
|
// Verarbeite die Metadaten, vor allem:
|
||||||
// - Nummer der Mail
|
// - Nummer der Mail
|
||||||
// - Subject
|
// - Subject
|
||||||
@@ -213,9 +258,18 @@ public class MyMail {
|
|||||||
//
|
//
|
||||||
// Hinweis: Denke daran die Maskierung des Enzeichens "." rückgängig zu machen.
|
// Hinweis: Denke daran die Maskierung des Enzeichens "." rückgängig zu machen.
|
||||||
// Tipp: Merk dir in einem boolean, ob du im Textkörper oder im Header bist.
|
// Tipp: Merk dir in einem boolean, ob du im Textkörper oder im Header bist.
|
||||||
|
mes = con.receive();
|
||||||
|
if(header){
|
||||||
|
if(mes.equals("")) header = false;
|
||||||
|
else if(mes.startsWith("Subject")) subject = mes.substring(9);
|
||||||
|
else if(mes.startsWith("From")) from = mes.substring(mes.indexOf("<")+1, mes.indexOf(">"));
|
||||||
|
else if(mes.startsWith("Date")) date = mes.substring(7);
|
||||||
|
} else {
|
||||||
|
if(mes.equals(".")) break;
|
||||||
|
else text += mes+"\n";
|
||||||
|
}
|
||||||
} // end of while
|
} // end of while
|
||||||
|
return new Mail(pNumber,date,from,subject,text);
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -235,16 +289,36 @@ public class MyMail {
|
|||||||
*/
|
*/
|
||||||
public void deleteMail( Mail pMail ) {
|
public void deleteMail( Mail pMail ) {
|
||||||
// Verbindung erstellen und prüfen
|
// Verbindung erstellen und prüfen
|
||||||
|
boolean connected = connectToServer();
|
||||||
|
if( !connected ) {
|
||||||
|
// Letzten Fehler anzeigen (wird in connectToServer gesetzt).
|
||||||
|
gui.setError(lastError);
|
||||||
|
return; // Abbrechen
|
||||||
|
}
|
||||||
// Anmeldung durchführen und prüfen
|
// Anmeldung durchführen und prüfen
|
||||||
|
boolean loggedin = login();
|
||||||
|
if( !loggedin ) {
|
||||||
|
// Letzten Fehler anzeigen
|
||||||
|
gui.setError(lastError);
|
||||||
|
return; // Abbrechen
|
||||||
|
}
|
||||||
// Prüfen, ob eine Mail mit der Nummer vorhanden ist
|
// Prüfen, ob eine Mail mit der Nummer vorhanden ist
|
||||||
// Hinweis: Die Nummer der Mail ist über pMail.getNumber() abrufbar
|
// Hinweis: Die Nummer der Mail ist über pMail.getNumber() abrufbar
|
||||||
|
con.send("dele "+ pMail.getNumber());
|
||||||
|
String mes = con.receive();
|
||||||
|
if(mes.startsWith("-ERR")){
|
||||||
|
lastError="EMail nich vorhanden";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Mail als gelöscht markieren
|
// Mail als gelöscht markieren
|
||||||
|
gui.setStatus("Mail "+ pMail.getNumber()+ " wurde gelöscht");
|
||||||
|
|
||||||
// Löschung ausführen und Verbindung beenden.
|
// Löschung ausführen und Verbindung beenden.
|
||||||
|
con.send("quit");
|
||||||
// Mail aus der GUI entfernen und neu aufbauen.s
|
// Mail aus der GUI entfernen und neu aufbauen.s
|
||||||
gui.removeMailFromList(pMail);
|
gui.removeMailFromList(pMail);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,42 +1,78 @@
|
|||||||
#BlueJ package file
|
#BlueJ package file
|
||||||
dependency1.from=MailClient
|
dependency1.from=MyMailGUI
|
||||||
dependency1.to=Connection
|
dependency1.to=MyMail
|
||||||
dependency1.type=UsesDependency
|
dependency1.type=UsesDependency
|
||||||
editor.fx.0.height=777
|
dependency2.from=MyMailGUI
|
||||||
editor.fx.0.width=804
|
dependency2.to=Mail
|
||||||
editor.fx.0.x=36
|
dependency2.type=UsesDependency
|
||||||
editor.fx.0.y=23
|
dependency3.from=MyMailGUI
|
||||||
objectbench.height=101
|
dependency3.to=List
|
||||||
objectbench.width=776
|
dependency3.type=UsesDependency
|
||||||
|
dependency4.from=MyMail
|
||||||
|
dependency4.to=Connection
|
||||||
|
dependency4.type=UsesDependency
|
||||||
|
dependency5.from=MyMail
|
||||||
|
dependency5.to=MyMailGUI
|
||||||
|
dependency5.type=UsesDependency
|
||||||
|
dependency6.from=MyMail
|
||||||
|
dependency6.to=Mail
|
||||||
|
dependency6.type=UsesDependency
|
||||||
|
editor.fx.0.height=1416
|
||||||
|
editor.fx.0.width=2576
|
||||||
|
editor.fx.0.x=-8
|
||||||
|
editor.fx.0.y=-8
|
||||||
|
objectbench.height=193
|
||||||
|
objectbench.width=2536
|
||||||
package.divider.horizontal=0.6
|
package.divider.horizontal=0.6
|
||||||
package.divider.vertical=0.8007380073800738
|
package.divider.vertical=0.8480243161094225
|
||||||
package.editor.height=427
|
package.editor.height=1109
|
||||||
package.editor.width=662
|
package.editor.width=2425
|
||||||
package.editor.x=40
|
package.editor.x=0
|
||||||
package.editor.y=172
|
package.editor.y=0
|
||||||
package.frame.height=600
|
package.frame.height=1416
|
||||||
package.frame.width=800
|
package.frame.width=2576
|
||||||
package.numDependencies=1
|
package.numDependencies=6
|
||||||
package.numTargets=2
|
package.numTargets=5
|
||||||
package.showExtends=true
|
package.showExtends=true
|
||||||
package.showUses=true
|
package.showUses=true
|
||||||
project.charset=UTF-8
|
project.charset=UTF-8
|
||||||
readme.height=58
|
readme.height=60
|
||||||
readme.name=@README
|
readme.name=@README
|
||||||
readme.width=47
|
readme.width=49
|
||||||
readme.x=10
|
readme.x=10
|
||||||
readme.y=10
|
readme.y=10
|
||||||
target1.height=50
|
target1.height=70
|
||||||
target1.name=Connection
|
target1.name=MyMail
|
||||||
target1.showInterface=false
|
target1.showInterface=false
|
||||||
target1.type=ClassTarget
|
target1.type=ClassTarget
|
||||||
target1.width=90
|
target1.width=120
|
||||||
target1.x=350
|
target1.x=140
|
||||||
target1.y=40
|
target1.y=10
|
||||||
target2.height=50
|
target2.height=70
|
||||||
target2.name=MailClient
|
target2.name=Mail
|
||||||
target2.showInterface=false
|
target2.showInterface=false
|
||||||
target2.type=ClassTarget
|
target2.type=ClassTarget
|
||||||
target2.width=80
|
target2.width=120
|
||||||
target2.x=110
|
target2.x=10
|
||||||
target2.y=150
|
target2.y=80
|
||||||
|
target3.height=50
|
||||||
|
target3.name=Connection
|
||||||
|
target3.showInterface=false
|
||||||
|
target3.type=ClassTarget
|
||||||
|
target3.width=100
|
||||||
|
target3.x=350
|
||||||
|
target3.y=40
|
||||||
|
target4.height=70
|
||||||
|
target4.name=List
|
||||||
|
target4.showInterface=false
|
||||||
|
target4.type=ClassTarget
|
||||||
|
target4.width=150
|
||||||
|
target4.x=140
|
||||||
|
target4.y=90
|
||||||
|
target5.height=70
|
||||||
|
target5.name=MyMailGUI
|
||||||
|
target5.showInterface=false
|
||||||
|
target5.type=ClassTarget
|
||||||
|
target5.width=120
|
||||||
|
target5.x=10
|
||||||
|
target5.y=160
|
||||||
|
|||||||
Reference in New Issue
Block a user