PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : imap-attributes: Was sagen mir die Bitmasks?


jmeyerdo
06.11.2006, 21:40:31
Hallo!

Ich greife per php-imap auf meine Mailboxen zu.
Dabei bin ich beim Debuggen eines PHP-Clients auf bei Verwendung des Befehls imap_getmailboxes auf die attributes der Mailboxen (Folder) gestoßen.

Das PHP-Handbuch sagt dazu folgendes:


Attributes is a bitmask that can be tested against:
LATT_NOINFERIORS - This mailbox has no "children" (there are no mailboxes below this one).

LATT_NOSELECT - This is only a container, not a mailbox - you cannot open it.

LATT_MARKED - This mailbox is marked. Only used by UW-IMAPD.

LATT_UNMARKED - This mailbox is not marked. Only used by UW-IMAPD.


Nun bekomme ich aber bei verschiedenen Servern/Mailboxen/Foldern folgende Ergebnisse: 1, 32, 40, 64

Obwohl mir grundsätzlich schon klar ist, wie bitmasks verwendet werden, kann ich mir diese Ergebnisse leider nicht erklären und auch bei einer ausführlichen Google-Suche bin ich nicht fündig geworden.

Hat jemand einen kurzen Tipp oder eine kurze Erklärung dazu?

Vielen Dank, viele Grüße, Jens

BenniG.
06.11.2006, 22:42:23
Da werden wohl noch ein paar andere Flags gesetzt sein, hab auf die schnelle aber keine weiter Doku gefunden..
Leicht checken welches bit gesetzt ist kannst du ja über bitweises und:

if ( $attributes & LATT_UNMARKED ) echo "LATT_UNMARKED";

Wenn das Bit nicht gesetzt ist, kommt 0 raus, was als False interpretiert wird..

Oder was war jetzt deine Frage?

jmeyerdo
07.11.2006, 08:25:45
Hallo!

Vielen Dank für die Antwort. Das hilft schon mal ein wenig weiter.

Allerdings würde ich die Bitmask schon gerne richtig interpretieren/verstehen, um daran z.B. zwischen Cyrus- und Courier-Mailserver zu unterscheiden.
Beim Cyrus ist der Attributes-Wert des Folders "INBOX" == 1, während beim Courier folgendes Array ausgegeben wird:


Array
(
[0] => stdClass Object
(
[name] => {mail3.ktit.de:143/imap/novalidate-cert/notls}INBOX.Test
[attributes] => 64
[delimiter] => .
)

[1] => stdClass Object
(
[name] => {mail3.ktit.de:143/imap/novalidate-cert/notls}INBOX.Drafts
[attributes] => 64
[delimiter] => .
)

[2] => stdClass Object
(
[name] => {mail3.ktit.de:143/imap/novalidate-cert/notls}INBOX.Sent
[attributes] => 64
[delimiter] => .
)

[3] => stdClass Object
(
[name] => {mail3.ktit.de:143/imap/novalidate-cert/notls}INBOX.Trash
[attributes] => 64
[delimiter] => .
)

[4] => stdClass Object
(
[name] => {mail3.ktit.de:143/imap/novalidate-cert/notls}INBOX
[attributes] => 40
[delimiter] => .
)

Der Wert 40 bei der INBOX wird bei zwei verschiedenen Courier-Mailservern ausgegeben, allerdings würde ich gerne definitiv wissen, ob ich den Wert zur Unterscheidung verwenden kann.

Viele Grüße,
Jens