Beta 2.2 -> E-Mail empfangen (IMAP)

Ich habe ein etwas seltsames Verhalten der Beta 2.2 beobachtet:
Ich habe zwei Skripte im Einsatz, das eine zeigt mir die Anzahl der „Unread messages“, der Instanz „E-Mail empfang (IMAP)“, an. Ein zweites Skript zeigt mir die Absender- und Betreffs der ungelesenen Mails, aus dem Cache, an. Nun ist die Anzahl der ungelesenen Mails im Cache meist viel größer, im Gegensatz zur „Unread“ Variable. Starte ich IPS neu,sieht es erst mal wieder gut aus. Daher gehe ich davon aus, das das ein Problem mit dem Mail Cache ist. Ausgewertet wird der Status „SEEN“ der Mails im Cache und dieser Status scheint nicht mit der „Wirklichkeit“ übereinzustimmen.

Kann das jemand bestätigen und gibt es eine Funktion, mit der ich den Mail Cache löschen kann?

probier mal : IMAP_UpdateCache()

Hab das IMAP-Modul mal heute getestest.
Bei steht die Variable „Unread messages“ immer auf „keine“ ?

Anscheinend kann ich auch den Cache nicht aendern in der Groesse.
Hab mal folgendes probiert:


	IMAP_SetCacheSize(13965,20);
	IMAP_UpdateCache(13965);
	$array = IMAP_GetCachedMails(13965);
	$count1 = IMAP_GetCacheSize(13965);
	$count2 =  sizeof ($array);

count1 ist auf 20 aber das array besteht immer aus 10 Daten.

Wenn ich den Befehl teste kommt folgende Meldung:

„Warning: Wrong parameter count for imap_updatecache() in [.Skripte\Temp-Skript] on line 2“

Ist das ein „standard“ PHP IMAP Modul Befehl oder ein mit dem neuen E-Mail Modul der Beta 2.2 kompatibler Befehl.

um einen IPS-internen Befehl ==> IMAP_UpdateCache(InstanceID: integer)

… CRTL + SPACE im Scripteditor benutzen, dann sieht Du die erwarteten Parameter

tgusi74

Danke für den Tipp … aber das scheint eher den gleichen Effekt zu haben, wie das Update des Caches, den IPS selber alle 5 Minuten ausführt. Ich würde gerne den cache zwischendurch löschen … was scheinbar IPS nicht alle 5 Minuten macht, bevor der Cache aktualisiert wird. Ich muss mal versuchen, die cache Größe auf 0 und dann wieder auf 10 zu setzen, vielleicht hilft das ja. Kann den jemand von euch den „Fehler“ nachvollziehen, oder ist bei euch der Inhalt des Caches immer ok? Es geht mir im Besonderen um das „SEEN“ Flag.

– Edit –
Also das mit der Cache Größe funktioniert auch nicht um den Cache zu löschen.
Nochmal eine kurze Beschreibung meines Problems:
Ich sende mir zwei Mails, ohne sie zu öffnen, also „ungelesen“.
Wenn ich den Cache aktualisiere steht der Staus der Instant „E-Mail empfangen (IMAP)“ „Unread Messadges“ = 2 (also ok)
Lese ich den Cache dann aus und lasse mir nur die Mails mit „[Flag] != SEEN“ anzeigen, bekomme ich die beiden Mails angezeigt.
Nun lese ich beide E-Mails und lasse den Cache erneut aktualisieren. Der Staus „Unread Messages“ ändert sich korrekt auf „kein(e)“. Trotzdem haben nun beide Mails im Cache immer noch nicht den Status „SEEN“ und werden mir somit weiterhin als ungelesen angezeigt. Starte ich IPS neu, ist der Status dann richtig.

Das Problem weiter eingrenzt. Wenn ich mit IMAP-SetChacheSize die
Groesse des Cache aendere dann muss ich erst in mit Hand in die Konfiguration gehen. Dort steht dann : Diese Konfiguration wurde noch
nicht gespeichert. Erst wenn ich auf uebernehmen gehe hat der Cache
die neue Groesse.

… dazu musst du die Konfiguration mit „IPS_ApplyChanges(InstanceID)“ speichern

tgusi74

Also ich hab im Cache einige emails mit dem [Flags] => also nicht gelesen
aber ich hab immer!! die Anzeige "Unread Messages = Keine !

Dann müssen wir wohl warten bis paresy sich zu dem Sachverhalt äußert und ob der unsere Probleme nachvollziehen kann.
Zwischenlösung für mich wäre ein Workaround mit dem ich den Cache leeren könnte.
Cache auf 0, dann „IPS_ApplyChanges(Id)“, Cache wieder auf 10 und noch mal „IPS_ApplyChanges(id)“, hilft leider auch nicht. Dadurch wird der Inhalt leider auch nicht gelöscht.

Hab es gerade gesehen wie es geht, hatte bis her nur pop3 benutzt.

Hallo,

wie ermittelt ihr den eigentlich die Anzahl der ungelesenen Nachrichten?
Ich habe dazu noch keine Befehl gesehen?

Schöne Grüße
Thomas

Die „eigentliche“ Anzahl der „Unread messages“ findest du als Integer Var unterhalb der Instanz „E-Mail empfangen (IMAP)“.

Um mir die Betreffs und Absender der ungelesenen Mails als WFC Popup anzeigen zu lassen, mach ich mit folgendem Skript:

<?
$new_mails = IMAP_GetCachedMails(11111 /*[.Geräte\E-Mail empfangen (IMAP)]*/); // ID anpassen !!
$info = "";
for ($i = 0; $i < count($new_mails) ; $i++)
{
if($new_mails[$i]['Flags'] != "SEEN"){
$info = $info."Eingang : ".date("d.m.Y - H:i:s",$new_mails[$i]['Date'])."<br>Absender : ".$new_mails[$i]['SenderAddress']."<br>Name &nbsp: ".$new_mails[$i]['SenderName']."<br>Betreff : ".$new_mails[$i]['Subject']."<br><br>";}
}
WFC_SendPopup(26191 /*[WebFront Configurator]*/, "Neue Mails",  $info); // ID anpassen !!
?>

Hallo,

so, ich habe es mal probiert, und es scheind bei mir auch so zu sein, die unread Variable zeigt 19 und wenn ich das Array durchzähle komme ich auf 21.
Ich habe es mit meinen Web.de Zugang probiert.

Schöne Grüße
Thomas

Danke! Das wars.

Ich hab zwar noch immer keine Anzeige der „Unread messages“
bin aber meine emails im cache durchgegangen.
Wenn ich eine email loesche bevor ich sie gelesen habe ( zB Spam )
steht die im Cache als ungelesen. Vielleicht ist das deine Abweichung.

Bei mir ist es das definitiv nicht, bei mir werden frisch gelesene Mails weiterhin nicht als „SEEN“ markiert, obwohl im „Unread messages“ korrekt angezeigt.

Hallo,

ich habe noch ein wenig probiert und auch mal einen Packtfilter mit laufen lassen.
Sieht so aus als wenn IPS sich die Daten nur einmal holt wenn die Mail neu ist, lese ich die Mail dann online, wird der Status nicht mehr abgefragt und sie bleibt in IPS als ungelesen.


* OK IMAP server ready H miweb001 80520
C1 LOGIN 123456 passwort
C1 OK LOGIN finished.
C2 CAPABILITY
* CAPABILITY IMAP4 IMAP4rev1 LITERAL+ UIDPLUS NAMESPACE UNSELECT X-NETSCAPE
C2 OK CAPABILITY Completed
C3 CAPABILITY
* CAPABILITY IMAP4 IMAP4rev1 LITERAL+ UIDPLUS NAMESPACE UNSELECT X-NETSCAPE
C3 OK CAPABILITY Completed
C4 SELECT "inbox"
* 33 EXISTS
* OK [UNSEEN 19] Message 1 is first unseen
* OK [PERMANENTFLAGS (\Deleted \Seen \Answered)]
* OK [UIDVALIDITY 1]
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
C4 OK [READ-WRITE] SELECT Completed
C5 STATUS "inbox" (MESSAGES RECENT UIDNEXT UIDVALIDITY UNSEEN)
* STATUS "INBOX" (MESSAGES 33 RECENT 33 UIDNEXT 1161075610 UIDVALIDITY 1 UNSEEN 19)
C5 OK STATUS Completed
C6 FETCH 33 (UID)
* 33 FETCH (UID 1161075609)
C6 OK FETCH Completed
C7 UID FETCH 1161075609 (RFC822.HEADER)
* 33 FETCH (UID 1161075609 RFC822.HEADER {725}
Received: from [87.106.11.126] (helo=s15219538.onlinehome-server.info)
	by mx36.web.de with esmtp (WEB.DE 4.110 #314)
	id 1NPMsK-0002YD-00
	for name@web.de; Mon, 28 Dec 2009 22:11:36 +0100
Received: (qmail 19857 invoked by uid 33); 28 Dec 2009 22:12:06 +0100
Date: 28 Dec 2009 22:12:06 +0100
To: name@web.de
Subject: Neue Antwort im Thema 'Beta 2.2 -> E-Mail empfangen (IMAP)'
From: "IP-Symcon Community Forum" <noreply@ipsymcon.de>
Auto-Submitted: auto-generated
Message-ID: <20091228211205.ace4107a5ba9@www.ip-symcon.de>
MIME-Version: 1.0
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: 8bit
X-Priority: 3
X-Mailer: vBulletin Mail via PHP
Return-Path: noreply@ipsymcon.de

)
C7 OK UID FETCH Completed
C8 UID FETCH 1161075609 (FLAGS)
* 33 FETCH (FLAGS () UID 1161075609)
C8 OK UID FETCH Completed
C9 FETCH 32 (UID)
* 32 FETCH (UID 1161075608)
C9 OK FETCH Completed
C10 FETCH 31 (UID)
* 31 FETCH (UID 1161075607)
C10 OK FETCH Completed
C11 FETCH 30 (UID)
* 30 FETCH (UID 1161075606)
C11 OK FETCH Completed
C12 FETCH 29 (UID)
* 29 FETCH (UID 1161075605)
C12 OK FETCH Completed
C13 FETCH 28 (UID)
* 28 FETCH (UID 1161075604)
C13 OK FETCH Completed
C14 FETCH 27 (UID)
* 27 FETCH (UID 1161075603)
C14 OK FETCH Completed
C15 FETCH 26 (UID)
* 26 FETCH (UID 1161075602)
C15 OK FETCH Completed
C16 FETCH 25 (UID)
* 25 FETCH (UID 1161075601)
C16 OK FETCH Completed
C17 FETCH 24 (UID)
* 24 FETCH (UID 1161075600)
C17 OK FETCH Completed
C18 FETCH 23 (UID)
* 23 FETCH (UID 1161075599)
C18 OK FETCH Completed
C19 FETCH 22 (UID)
* 22 FETCH (UID 1161075598)
C19 OK FETCH Completed
C20 FETCH 21 (UID)
* 21 FETCH (UID 1161075597)
C20 OK FETCH Completed
C21 FETCH 20 (UID)
* 20 FETCH (UID 1161075596)
C21 OK FETCH Completed
C22 FETCH 19 (UID)
* 19 FETCH (UID 1161075595)
C22 OK FETCH Completed
C23 FETCH 18 (UID)
* 18 FETCH (UID 1161075594)
C23 OK FETCH Completed
C24 FETCH 17 (UID)
* 17 FETCH (UID 1161075593)
C24 OK FETCH Completed
C25 FETCH 16 (UID)
* 16 FETCH (UID 1161075592)
C25 OK FETCH Completed
C26 FETCH 15 (UID)
* 15 FETCH (UID 1161075591)
C26 OK FETCH Completed
C27 FETCH 14 (UID)
* 14 FETCH (UID 1161075590)
C27 OK FETCH Completed
C28 FETCH 13 (UID)
* 13 FETCH (UID 1161075589)
C28 OK FETCH Completed
C29 FETCH 12 (UID)
* 12 FETCH (UID 1161075588)
C29 OK FETCH Completed
C30 FETCH 11 (UID)
* 11 FETCH (UID 1161075587)
C30 OK FETCH Completed
C31 FETCH 10 (UID)
* 10 FETCH (UID 1161075586)
C31 OK FETCH Completed
C32 FETCH 9 (UID)
* 9 FETCH (UID 1161075585)
C32 OK FETCH Completed
C33 FETCH 8 (UID)
* 8 FETCH (UID 1161075584)
C33 OK FETCH Completed
C34 FETCH 7 (UID)
* 7 FETCH (UID 1161075583)
C34 OK FETCH Completed
C35 FETCH 6 (UID)
* 6 FETCH (UID 1161075582)
C35 OK FETCH Completed
C36 FETCH 5 (UID)
* 5 FETCH (UID 1161075581)
C36 OK FETCH Completed
C37 FETCH 4 (UID)
* 4 FETCH (UID 1161075580)
C37 OK FETCH Completed
C38 FETCH 3 (UID)
* 3 FETCH (UID 1161075579)
C38 OK FETCH Completed
C39 FETCH 2 (UID)
* 2 FETCH (UID 1161075578)
C39 OK FETCH Completed
C40 FETCH 1 (UID)
* 1 FETCH (UID 1161075577)
C40 OK FETCH Completed
C41 LOGOUT
* BYE received LOGOUT
C41 OK LOGOUT Completed


So etwas hatte ich ja vermutet, daher meine Idee den Cache zu löschen bzw. zu leeren … damit dies erneut geladen wird und der Status dadurch aktualisiert.

Das Verhalten ist so korrekt, da IMAP das SEEN-Flag direkt auf dem Server setzt. Da IPS nicht als vollwertiger Mail-Client gedacht ist, koppeln wir das Abrufen von Mails nicht mit dem automatischen Setzen des Flags.

IPS speichert die Mail-Liste übrigens direkt im RAM, daher ist nach Serverstart die Liste leer.

Sofern die E-Mail über IPS gelesen wurden, wird ab der nächsten Version das SEEN Flag gesetzt. Von extern gelesene Mails werden nicht mehr neu aktualisiert, da diese im Cache sind und nicht mehr neu geladen werden.

paresy

Danke für die Antworten, von euch beiden. Wenn das SEEN Flag korrrekt gesetzt wird, ist ja auch alles ok. Was mir noch aufgefallen ist, das über Nacht (ohne Neustart) der Status dann wieder irgendwann korrekt ist. Scheinbar wird wohl in einem bestimmten Zeitintervall, der Cache, schon neu geladen. Wäre es denn nicht vielleicht trotzdem sinnvoll einen Befehl einzuführen, mit dem man den Cache im RAM, bei Bedarf, leeren kann?