javax.mail MessageCount

Paul1896

Mitglied
Guten Tag,

ich hoffe ihr könnt mir helfen. Ich möchte auf einige Postfächer zugreifen und mir die die aktuelle Anzahl der Mails ausgeben lassen. Ich bin noch ziemlicher Anfänger in Java, aber möchte es trotzdem mit eurer Hilfe schaffen.

Hier ist einmal mein bisheriger Code:

[Java]
import java.util.*;
import java.io.*;
import javax.mail.*;
public class getAnzahl
{
public static void getMessageCount( final String host, final String user, final 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 );
Message[] message = folder.getMessages();
for ( int i = 0; i < message.length; i++ )

folder.close( false );
store.close();
}
public static void main( String[] args ) throws Exception
{
getMessageCount( "host","Benutzer", "passwd" );
}
System.out.println(getMessageCount)
}
[/code]

Bin gerade etwas ratlos, wie es jetzt weitergehen soll. Könntet ihr mir irgendwelche Anregungen liefern bzw. Tipps wie ich weitermachen soll.

Danke!
 
Zuletzt bearbeitet von einem Moderator:
S

SlaterB

Gast
die Länge des message-Arrays anschauen? machst du für die Schleife ja eh schon,
oder direkt getMessageCount() von Folder verwenden

weißt du die Namen aller Folder? anscheinend hierarchisch aufgebaut, der root-Folder liefert auch weitere, evtl. alle durcharbeiten usw.

Arbeit, Arbeit, Arbeit, ein konkretes Problem wäre leichter zu beantworten als nur 'was könnte ich jetzt noch machen?'
 

Paul1896

Mitglied
die Länge des message-Arrays anschauen? machst du für die Schleife ja eh schon,
oder direkt getMessageCount() von Folder verwenden

weißt du die Namen aller Folder? anscheinend hierarchisch aufgebaut, der root-Folder liefert auch weitere, evtl. alle durcharbeiten usw.

Arbeit, Arbeit, Arbeit, ein konkretes Problem wäre leichter zu beantworten als nur 'was könnte ich jetzt noch machen?'

Hallo habe jetzt die Methode getMessageCount direkt in die Folder eingebaut. Dann bräuchte ich eignetlich nicht mehr die Schleife oder? Hoffe habe das richtig verstanden.

Es sind alles root-Folder. Es sind mehrere Root-Postfächer. Es geht aber auch erst mal nur darum das es auf einem Postfach richtig läuft, dann würde ich es anapssen. Irgendwie stehe ich gerade auf dem Sclauch, wie ich weitermache und was noch fehlt. Bin bei Java nicht so bewandert.
 
S

SlaterB

Gast
> Dann bräuchte ich eignetlich nicht mehr die Schleife oder?
genau

der Weg ist immer sich anzuschauen was schon funktioniert, wo es hakt,

ganz zu Beginn schreibe nur eine Zeile (neben Standard wie main-Methode):
System.out.println("Hello World");
funktionierts? wäre ein guter Anfang?

was willst du haben? das steht noch vor dem prüfen was funktioniert,
eine Ausgabe "Anzahl = .. "?
dann baue das Programm so dass es erstmal "Anzahl = 0" erfolgreich ausgibt,
aus dem obigen Code sieht Zeile 24 verdächtig komisch außerhalb einer Methode aus,

wenn "Anzahl = 0" erfolgreich ausgegeben wird, ersetze 0 durch eine Variable,
sorge dafür dass die Variable befüllt wird, z.B. mit deiner Methode,
dann fällt auf dass die keinen Rückgabewert hat, allerdings könnte die Ausgabe auch darin erfolgen,

in die Variable muss irgendwie das getMessageCount() von Folder,
wenn die Anzahl stimmt dann fertig, sonst vielleicht weitere Folder zu holen und zu addieren usw.

alles simple Schritte, da kommst du auch jeweils selber drauf,
dagegen sind die bisherigen Codezeilen doch auch nicht leichter
 

Paul1896

Mitglied
So habe jetzt bisschen dran rumgeschraubt.

Bei dem Verbindungsaufbau kommt jetzt die Fehlermeldung:

Exception in thread "main" javax.mail.AuthenticationFailedException: Command is not valid in this state.
at com.sun.mail.pop3.POP3Store.protocolConnect(POP3Store.java:208)
at javax.mail.Service.connect(Service.java:295)
at javax.mail.Service.connect(Service.java:176)
at getAnzahl.getMessageCount(getAnzahl.java:34)
at getAnzahl.main(getAnzahl.java:20)

Kann mir da wer weiterhelfen, was die Fehlermeldung aussagen soll?

Hier nochmal mein Code:

Java:
import java.util.*;

import java.io.*;

import javax.mail.*;

public class getAnzahl

{

final static String host = "host";

final static String user = "user";

final static String passwd = "passwd";


public static void main(String[] args) throws Exception{

	getMessageCount(host, user, passwd);

}



public static void getMessageCount( final String host, final String user, final 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 );

        int message = folder.getMessageCount(); 

        folder.close( false );

        store.close();

        System.out.println(message);

        }

}
 

Bernd Hohmann

Top Contributor
Was ist das für ein Mailserver auf der anderen Seite? Klingt nach einer Exchange Büchse bei der Plain-Auth für POP3 abgeschaltet wurde. Die Meldung ""command is not valid in this state" kommt imho nicht aus java.mailx.*

Bernd
 

Bernd Hohmann

Top Contributor
Entweder PlainAuth am Exchange einschalten (google: "command is not valid in this state" exchange) oder herausfinden, welche POP3 Authentifizierungsmöglichkeiten der jeweilige Server untertützt und das in der Mail-API einschalten (google: javamail pop3 authentication example

Ich habs noch nie gebraucht, daher hab ich auch keine Ahnung wie der Authenticator dort arbeitet.

Bernd
 
S

SlaterB

Gast
lieber unnötig nachgefragt als dann doch vergessen:
den ersten google-Link
100004 - Mail Fetching Troubleshooting

mit
c. Error when encrypted mode is enabled on POP in the mail server.

Cause:

Unable to fetch email when encrypted mode is enabled on POP in the mail server.

Error trace in logs:

javax.mail.AuthenticationFailedException: Command is not valid in this state.

Solution:

Reset the password format on the exchange server to the Normal format. This can be done by running a query on the exchange server shell.

Follow the steps below to configure the IMAP service to use Plain Text Login:

- Open Exchange Management Shell from Start -> Programs -> Microsoft Exchange 2007.
- Enter the following In the shell,
- set-POPsettings –logintype plaintextlogin
- Press Enter.
- From the Services panel restart the Microsoft Exchange Information Store service.
berücksichtigt?
 

Paul1896

Mitglied
So, habe es jetzt hingekriegt. Habe es jetzt mit enem anderen Postfach ausprobiert und da funzt jetzt alles.

Vielen Dank für eure Hilfe!

Edit: Habt ihr noch irgendwleche Verbesserung- oder Tuningvorschläge?

Java:
import java.util.*;

import java.io.*;

import javax.mail.*;

public class getAnzahl

{

final static String host = "host";

final static String user = "user";

final static String passwd = "password";



public static void main(String[] args) throws Exception{

	String Message = getMessageCount(host, user, passwd);
	System.out.println(Message);

}



public static String getMessageCount( final String host, final String user, final 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 );

        int message = folder.getMessageCount(); 
       
        folder.close( false );

        store.close();
     
        return(message + " ");
}
 
Zuletzt bearbeitet:

stone71

Mitglied
Also für den Start ist dies schon einmal ok...
Änderungen machen hier noch viele Sinn, allerdings stellt sich die Frage, was Du wirklich erreichen möchtest!?
Zuerst einmal macht es Sinn das Öffnen und Schliessen der Verbindung in eigenständigen Methoden zu verwalten. Momentan ist es auch so, dass in einem Fehlerfall die Exception geworfen wird, allerdings was passiert mit der Connection?

Beim prüfen solcher Ordner macht nicht immer nur die Anzahl der Mail Sinn, sondern es gibt noch viele weitere Infos, die abgerufen werden können.

So ist auch die Frage, ob immer nur ein Ordner geprüft werden soll, wenn Du dies möchtest, dann würde ich den Foldernamen übergeben.
Willst Du alle Folder prüfen, dann macht eine Schleife Sinn???

Des Weiteren liefert Dir die Methode von JavaMail eine Zahl, wenn Du hier eine Meldung schreiben möchtest, dann vielleicht nicht mit dem return!

Gibt also noch ein paar Sachen, die man ändern könnte, dabei viel Spaß und wenn Du noch Fragen hast...
 

Pentalon

Bekanntes Mitglied
Ich hätte dieses Beispiel gerne nachvollzogen, jedoch sagt Eclips "javax.mail.*" cannot be resolved ;(
Was mache ich falsch ?

Pentalon
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Probleme mit javax.mail.Session Allgemeine Java-Themen 8
jumichel Eclipse The package javax.mail is not accessible Allgemeine Java-Themen 3
C javax.mail.Message message.setreplyto() null setzen (keine replyto Adresse) Allgemeine Java-Themen 25
E javax.mail sene Type ändern Allgemeine Java-Themen 2
U javax.mail.Folder.list() zeigt nicht alle Ordner Allgemeine Java-Themen 5
H Java Mail Fehlermeldung: java.lang.NoClassDefFoundError: javax/mail/internet/AddressException Allgemeine Java-Themen 5
P welche java version für javax.mail? Allgemeine Java-Themen 7
C [javax.mail] Betreff vergleichen Allgemeine Java-Themen 5
C [javax.mail] Folder not open Allgemeine Java-Themen 2
M javax.mail – Sending failed – Invalid Addresses Allgemeine Java-Themen 8
schegga_B javax.crypto - Cipher Objekte - Sevice Provider matching? Allgemeine Java-Themen 1
schegga_B AES-Algorithmus in javax.crypto Allgemeine Java-Themen 3
T Erste Schritte mit javax.validation Allgemeine Java-Themen 5
severin_96 javax.crypto.IllegalBlockSizeException Allgemeine Java-Themen 7
pkm javax.script.ScriptEngineManager gibt mir keine Engine Allgemeine Java-Themen 4
RalleYTN javax.vecmath Transformationsmatrix für LWJGL3 Allgemeine Java-Themen 2
R javax.comm --> Programm funktioniert nach Export nicht mehr Allgemeine Java-Themen 0
T javax.script (JavaScript): Nicht-JRE-Packages importieren/nutzen Allgemeine Java-Themen 4
buggy84 JavaX und win32comm.dll Allgemeine Java-Themen 3
N javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,1] Allgemeine Java-Themen 3
Q javax.crypto.BadPaddingException - was ist das genau? Allgemeine Java-Themen 9
G Wie installiere ich javax-usb unter windows? Allgemeine Java-Themen 0
B Javax.Sound Problem (setMessage-Methode) Allgemeine Java-Themen 2
I javax.sound.sampled.* - Hilfe zu den Controls Allgemeine Java-Themen 8
E NoClassDefFoundError: javax/microedition/io/Connection Allgemeine Java-Themen 2
J javax.comm findet serielle ports nicht Allgemeine Java-Themen 2
B Eclipse [Ubuntu] Paket javax.media.* nicht gefunden Allgemeine Java-Themen 7
J package javax.servlet does not exist Allgemeine Java-Themen 5
T Wo ist javax.swing.TransferHandler enthalten? Allgemeine Java-Themen 10
M System.setProperty("javax.net.ssl.trustStore", "mykey.pkx"); Allgemeine Java-Themen 1
G javax.jms.IllegalStateException: This method. Allgemeine Java-Themen 4
E javax.comm: Suche eine open source Alternative zu rxtx Allgemeine Java-Themen 8
M Netbeans IDE und javax.comm 2.0 Allgemeine Java-Themen 4
O javax.comm ? Allgemeine Java-Themen 3
L Fehlende Teile des javax Packages Allgemeine Java-Themen 3
L javax.comm unter Linux Allgemeine Java-Themen 11
G javax.comm bzw serielle Schhnittstelle? Allgemeine Java-Themen 2
S Fehler bei der javax.usb api Allgemeine Java-Themen 2
reibi javax.crypto.SecretKey - Einfaches Beispiel gewünscht ;-) Allgemeine Java-Themen 2
K javax.comm Problem beim starten aus .jar heraus Allgemeine Java-Themen 3
foobar Rxtx vs javax.comm Allgemeine Java-Themen 2
T Exception at javax.swing.plaf.basic.BasicTableUI.paintCell Allgemeine Java-Themen 3
T Wo kann ich Javax.Comm Api Downloaden ? Allgemeine Java-Themen 6
H javax.comm und Parallele Schnittstelle (PIN für PIN) Allgemeine Java-Themen 7
S Javax.comm Probleme mit Ansteuerung eines 8051 EEPROMs Allgemeine Java-Themen 8
F Problem beim Drucken mit javax.print Allgemeine Java-Themen 2
S RS232 mit javax.comm Allgemeine Java-Themen 5
N javax.security.sasl verzweifelt gesucht Allgemeine Java-Themen 2
P javax.sound: clip.stop(); Allgemeine Java-Themen 4
S javax.comm unter Windows XP Allgemeine Java-Themen 2
Z E-Mail senden Allgemeine Java-Themen 2
N E-Mail Validator (ohne Regex!) Allgemeine Java-Themen 7
TechnikTVcode Mail Programm Allgemeine Java-Themen 2
N E-Mail per Java verschicken Allgemeine Java-Themen 2
B Java Mail: Prüfung auf neue Emails Allgemeine Java-Themen 1
B Java Mail: Emails sortieren? Allgemeine Java-Themen 5
B Java Mail: Prüfen, ob Email hat ein Anhang oder nicht Allgemeine Java-Themen 2
B Mail: Nicht vorhandener Empfänger ermitteln Allgemeine Java-Themen 4
B Java Mail: Unterscheidung bei Attachments und eingefügte Bilder in Email Allgemeine Java-Themen 18
T java mail 1.4.2| ssl Allgemeine Java-Themen 2
R Compiler-Fehler Bild per E-Mail versenden Allgemeine Java-Themen 3
H IDEA IntelliJ Java Mail funktioniert nach Export nicht mehr! Allgemeine Java-Themen 1
D JPanel in Mail darstellen Allgemeine Java-Themen 30
D Mail aus GUI generieren Allgemeine Java-Themen 2
KeVoZ_ Java Mail senden - geht nicht Allgemeine Java-Themen 4
K Input/Output E-mail Zusammenfassen Senden Allgemeine Java-Themen 2
F Java Mail Problem: Authentifizierung wird nicht immer mitgeschickt Allgemeine Java-Themen 1
M Java Mail verwenden Allgemeine Java-Themen 20
X Mail versenden mit java.mail Allgemeine Java-Themen 14
L Java Mail Allgemeine Java-Themen 0
B Java Mail Client als Outlook ausgeben Allgemeine Java-Themen 2
F E-Mail aus JAVA senden nach Umstellung auf Netbean 7.4 mit Java 7U45 nicht mehr möglich Allgemeine Java-Themen 4
T popup für e-mail Allgemeine Java-Themen 2
Z Java E-Mail Client mit End-to-End-Verschlüsselung Allgemeine Java-Themen 4
I Eigenes Mail-Programm schreiben Allgemeine Java-Themen 21
C E-Mail: Authenticator.getPasswordAuthentication() wird nicht gerufen Allgemeine Java-Themen 2
GUI-Programmer Java Mail - Proxy für Verbindung einstellen Allgemeine Java-Themen 2
P Mail wird nicht gesendet - Muss ich kein PW angeben ? Allgemeine Java-Themen 13
U Mailclient über getDesktop.mail vorbereiten, Problem beim Anhang: Allgemeine Java-Themen 3
S Mail Adressen Syntax prüfen Allgemeine Java-Themen 22
S Java Mail Allgemeine Java-Themen 3
G Problem Java Mail API: CC wird nicht berücksichtigt Allgemeine Java-Themen 7
R php hat mail() und java? Allgemeine Java-Themen 5
B Per BatchScript Mail versenden Allgemeine Java-Themen 27
S mail per smtp lokal in postfix einliefern Allgemeine Java-Themen 6
Mike90 Graph in einer Mail verschicken Allgemeine Java-Themen 7
N Java Mail Allgemeine Java-Themen 5
F Spam-Mail-Programm gesucht Allgemeine Java-Themen 11
N Java Mail Allgemeine Java-Themen 7
M [Java Mail] Multipart beim Senden funktioniert nicht. Allgemeine Java-Themen 11
S Shell-Befehl: mail Allgemeine Java-Themen 6
W mail senden mit java Allgemeine Java-Themen 4
C Desktop.mail Problem. IO Exception: Failed to open. Allgemeine Java-Themen 3
P Mail Notifier Allgemeine Java-Themen 9
J String auf E-Mail überprüfen Allgemeine Java-Themen 4
S E-Mail an nicht-RFC822-formatierte Adresse Allgemeine Java-Themen 4
M Desktop mail attachments Allgemeine Java-Themen 3
S E-Mail-Links: geklickten Link ermitteln Allgemeine Java-Themen 4
F Umlaute: E-Mail per JavaMail und Textfile Allgemeine Java-Themen 5
C Mail Api http Protokoll? Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben