[java] JavaMail > Message flags zijn allemaal false

Pagina: 1
Acties:

  • BHR
  • Registratie: Februari 2002
  • Laatst online: 27-05 13:30
Dit is de code die ik gebruik om de flags van een message van een pop3 server te bekijken (als debug uiteraard :P)

Java:
1
2
3
4
5
6
7
8
9
10
11
// message = javax.mail.Message impl object (pop3)
String flags = "";
flags += "Flag[ answered ] = " + message.getFlags().contains(Flags.Flag.ANSWERED) + "\n";
flags += "Flag[ deleted  ] = " + message.getFlags().contains(Flags.Flag.DELETED) + "\n";
flags += "Flag[  draft   ] = " + message.getFlags().contains(Flags.Flag.DRAFT) + "\n";
flags += "Flag[ flagged  ] = " + message.getFlags().contains(Flags.Flag.FLAGGED) + "\n";
flags += "Flag[  recent  ] = " + message.getFlags().contains(Flags.Flag.RECENT) + "\n";
flags += "Flag[   seen   ] = " + message.getFlags().contains(Flags.Flag.SEEN) + "\n";
flags += "Flag[   user   ] = " + message.getFlags().contains(Flags.Flag.USER) + "\n";

      System.out.println(flags);

En dit is het resultaat :?
code:
1
2
3
4
5
6
7
Flag[ answered ] = false
Flag[ deleted  ] = false
Flag[  draft   ] = false
Flag[ flagged  ] = false
Flag[  recent  ] = false
Flag[   seen   ] = false
Flag[   user   ] = false

De message (pop3) is verder in orde, want headers, subject en size kloppen verder allemaal. Ik krijg het alleen niet voor elkaar om de flags uit te lezen. Het is uiteindelijk de bedoeling om alleen de nieuwe messages eruit te filteren.

De twee verschillende status headers die ik tegenkom (via message.getAllHeaders()):
code:
1
2
3
4
5
# bij een oud bericht
Status=RO

# bij een nieuw bericht
Status=

De flags output is echter altijd zoals ik hierboven heb beschreven..

Wie weet er wat er fout gaat, of hoe het wel moet??

No amount of key presses will shut off the Random Bug Generator


  • Postman
  • Registratie: Februari 2000
  • Laatst online: 01-05 13:23
Lijkt mij dat dit wel moet werken idd :?

http://java.sun.com/j2ee/1.4/docs/api/javax/mail/Flags.html gebruikt als voorbeeld
Java:
1
2
3
// Check if DELETED flag is set of this message
 if (m.isSet(Flags.Flag.DELETED))
    System.out.println("DELETED message");

Misschien dus beter om het zo te doen? Of ipv een flag object te vergelijken een string gebruiken?

  • BHR
  • Registratie: Februari 2002
  • Laatst online: 27-05 13:30
Java:
1
2
flags += "Flag[ answered ] = " + message.isSet(Flags.Flag.ANSWERED) + "\n";
// ..

Geeft hetzelfde resultaat.. allemaal false.. :(

No amount of key presses will shut off the Random Bug Generator


  • Postman
  • Registratie: Februari 2000
  • Laatst online: 01-05 13:23
Kijk eens wat message.getFlags returned. Misschien krijg je wel helemaal niets terug, of iets verkeerd.

  • BHR
  • Registratie: Februari 2002
  • Laatst online: 27-05 13:30
Hier de mailheaders
code:
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
20-02-2004 20:32:37.581 (00.001) * Level 2 -->
============================================================
New mail found:
bllllllaaaaaaaatt

Fri Feb 20 15:34:51 CET 2004    3184
============================================================
Return-Path=<a@b.nl>
Received=from abc (1.2.3.4.bbeyond.nl [1.2.3.4])
        by a.b.nl (8.12.8/8.12.8) with ESMTP id abc
        for <a@b.nl>; Fri, 20 Feb 2004 15:31:01 +0100
From="a b" <a@b.nl>
To=<a@b.nl>
Subject=bllllllaaaaaaaatt
Date=Fri, 20 Feb 2004 15:34:51 +0100
Message-ID=<000501c3f7be$abc$5200a8c0@abc>
MIME-Version=1.0
Content-Type=multipart/alternative;
        boundary="----=_NextPart_000_0006_01C3F7C7.1529CF40"
X-Priority=3 (Normal)
X-MSMail-Priority=Normal
X-Mailer=Microsoft Outlook, Build 10.0.2627
Importance=Normal
X-MimeOLE=Produced By Microsoft MimeOLE V6.00.2800.1165
Status=RO
============================================================
Flags = javax.mail.Flags@0
SystemFlags =
UserFlags =
Flag[ answered ] = false
Flag[ deleted  ] = false
Flag[  draft   ] = false
Flag[ flagged  ] = false
Flag[  recent  ] = false
Flag[   seen   ] = false
Flag[   user   ] = false
Flag[ answered ] = false
Flag[ deleted  ] = false
Flag[  draft   ] = false
Flag[ flagged  ] = false
Flag[  recent  ] = false
Flag[   seen   ] = false
Flag[   user   ] = false


20-02-2004 20:32:37.582 (00.001) * Level 2 -->
============================================================
New mail found:
testing

Fri Feb 20 16:06:15 CET 2004    3166
============================================================
Return-Path=<d@e.nl>
Received=from def (4.3.2.1.bbeyond.nl [4.3.2.1])
        by a.b.nl (8.12.8/8.12.8) with ESMTP id i1KF2def027451
        for <d@e.nl>; Fri, 20 Feb 2004 16:02:25 +0100
From="d e" <d@e.nl>
To=<d@e.nl>
Subject=testing
Date=Fri, 20 Feb 2004 16:06:15 +0100
Message-ID=<000001c3f7c3$defdef$5200a8c0@def>
MIME-Version=1.0
Content-Type=multipart/alternative;
        boundary="----=_NextPart_000_0001_01C3F7CB.7801C6F0"
X-Priority=3 (Normal)
X-MSMail-Priority=Normal
X-Mailer=Microsoft Outlook, Build 10.0.2627
Importance=Normal
X-MimeOLE=Produced By Microsoft MimeOLE V6.00.2800.1165
Status=O
============================================================
Flags = javax.mail.Flags@0
SystemFlags =
UserFlags =
Flag[ answered ] = false
Flag[ deleted  ] = false
Flag[  draft   ] = false
Flag[ flagged  ] = false
Flag[  recent  ] = false
Flag[   seen   ] = false
Flag[   user   ] = false
Flag[ answered ] = false
Flag[ deleted  ] = false
Flag[  draft   ] = false
Flag[ flagged  ] = false
Flag[  recent  ] = false
Flag[   seen   ] = false
Flag[   user   ] = false


En hier de code die het produceert:
Java:
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
String the_flags = "";
Enumeration enum = message.getAllHeaders();
while(enum.hasMoreElements())
{
  Header h = (Header) enum.nextElement();
  headers += h.getName() + "=" + h.getValue() + "\n";
}

the_flags += "Flags = " + message.getFlags().toString() + "\n";
the_flags += "SystemFlags = ";

Flags.Flag[] sf = message.getFlags().getSystemFlags();
for(int i=0; i<sf.length; i++)
{
  if(sf[i] == Flags.Flag.ANSWERED)
    the_flags += "ANSWERED; ";
  else if(sf[i] == Flags.Flag.DELETED)
    the_flags += "DELETED; ";
  else if(sf[i] == Flags.Flag.DRAFT)
    the_flags += "DRAFT; ";
  else if(sf[i] == Flags.Flag.FLAGGED)
    the_flags += "FLAGGED; ";
  else if(sf[i] == Flags.Flag.RECENT)
    the_flags += "RECENT; ";
  else if(sf[i] == Flags.Flag.SEEN)
    the_flags += "SEEN; ";
  else if(sf[i] == Flags.Flag.USER)
    the_flags += "USER; ";
  else
    the_flags += "<UNKNOWN>; ";
}
the_flags += "\nUserFlags = ";

String us[] = message.getFlags().getUserFlags();
for(int i=0; i<us.length; i++)
{
  the_flags += us[i] + "; ";
}
the_flags += "\n";

the_flags += "Flag[ answered ] = " +
  message.getFlags().contains(Flags.Flag.ANSWERED) + "\n";
the_flags += "Flag[ deleted  ] = " +
  message.getFlags().contains(Flags.Flag.DELETED) + "\n";
the_flags += "Flag[  draft   ] = " +
  message.getFlags().contains(Flags.Flag.DRAFT) + "\n";
the_flags += "Flag[ flagged  ] = " +
  message.getFlags().contains(Flags.Flag.FLAGGED) + "\n";
the_flags += "Flag[  recent  ] = " +
  message.getFlags().contains(Flags.Flag.RECENT) + "\n";
the_flags += "Flag[   seen   ] = " +
  message.getFlags().contains(Flags.Flag.SEEN) + "\n";
the_flags += "Flag[   user   ] = " +
  message.getFlags().contains(Flags.Flag.USER) + "\n";

the_flags += "Flag[ answered ] = " + message.isSet(Flags.Flag.ANSWERED) + "\n";
the_flags += "Flag[ deleted  ] = " + message.isSet(Flags.Flag.DELETED) + "\n";
the_flags += "Flag[  draft   ] = " + message.isSet(Flags.Flag.DRAFT) + "\n";
the_flags += "Flag[ flagged  ] = " + message.isSet(Flags.Flag.FLAGGED) + "\n";
the_flags += "Flag[  recent  ] = " + message.isSet(Flags.Flag.RECENT) + "\n";
the_flags += "Flag[   seen   ] = " + message.isSet(Flags.Flag.SEEN) + "\n";
the_flags += "Flag[   user   ] = " + message.isSet(Flags.Flag.USER) + "\n";

logger.log(2,
  "\n============================================================\n" +
  "New mail found: \n" + subject + "\n\n" +
  sentDate.toString() + "\t" + size +
  "\n============================================================\n" +
  headers +
  "============================================================\n" +
  the_flags + "\n\n");


Wat gaat er fout.. :|

No amount of key presses will shut off the Random Bug Generator


  • Postman
  • Registratie: Februari 2000
  • Laatst online: 01-05 13:23
A System flag is represented by the Flags.Flag inner class. A User defined flag is represented as a String. User flags are case-independent.
Ik denk dus dat het aan je manier van vergelijken ligt. Je kijkt immers of er een object zit in een user flag, terwijl er in user alleen string zit.

  • BHR
  • Registratie: Februari 2002
  • Laatst online: 27-05 13:30
Ik snap je antwoord niet helemaal.. 8)7 Kun je mij vertellen op welke plaats/regelnummer ben ik niet goed aan het vergelijken ben??

No amount of key presses will shut off the Random Bug Generator


  • Postman
  • Registratie: Februari 2000
  • Laatst online: 01-05 13:23
BHR schreef op 21 februari 2004 @ 10:43:
Ik snap je antwoord niet helemaal.. 8)7 Kun je mij vertellen op welke plaats/regelnummer ben ik niet goed aan het vergelijken ben??
Vanaf regel 41 t/m 60. Kijk anders ook eens op die link die ik een aantal reacties hierboven postte.

  • BHR
  • Registratie: Februari 2002
  • Laatst online: 27-05 13:30
Dat zou toch niks moeten uitmaken met betrekking tot de overige flags..

SEEN en RECENT zouden toch wel minimaal 1 keer moeten voorkomen?! En ook die laat hij niet zien. Dat USER genegeerd wordt, daar kan ik wel inkomen, aangezien ik daar ook niks mee doe. Wat ik zo vreemd vind, is dat de standaard flags niet gezet worden.

PS. Je link heb ik al gevolgd (daar heb ik een deel van de code ook van) en tevens heb ik de mail api pdf al gedownload (waar ik ook wat testgevallen uit heb gehaald).

No amount of key presses will shut off the Random Bug Generator


  • BHR
  • Registratie: Februari 2002
  • Laatst online: 27-05 13:30
Hmz...
According to http://www.inf.fu-berlin....mail/pop3/POP3Folder.html, POP3 protocol doesn't support any permanent flags.
http://forum.java.sun.com...sp?forum=43&thread=258431

POP3 ondersteund flags (behalve DELETED) niet.. 8)7
Dat wordt dus iets anders verzinnen.. Bedankt voor je replies in ieder geval

No amount of key presses will shut off the Random Bug Generator

Pagina: 1