Patrick Welche wrote:
Overall I see that you send commands to the imap server using imclient_send,
the last argument of which is essentially the text of the imap command.
You register callbacks based on keyword, so that when the server sends you
a reply, the function registered gets called. I suspect I am getting confused
between "tagged" and "untagged". The following is fine, and I think that
. capability <- sent with imclient_send
* CAPABILITY IMAP4 IMAP4rev1 ... -> untagged? capability response
picked up by callback based on
keyword "CAPABILITY"
. OK Completed -> tagged? ok response picked up by
imclient_send's finishproc
but now for the problem
. examine inbox <- sent with imclient_send
* FLAGS (\Answered \Flagged ... -> untaged flags response, callback_flags
* OK [PERMANENTFLAGS ()] -> untagged ok response, callback_ok
* 13 EXISTS ********* What about these two?
* 1 RECENT ********* untagged responses with no keyword?
* OK [UNSEEN 13] -> untagged ok response, callback_ok
* OK [UIDVALIDITY 1043953684] -> untagged ok response, callback_ok
* OK [UIDNEXT 15] -> untagged ok response, callback_ok
. OK [READ-ONLY] Completed -> tagged? ok response picked up by
imclient_send's finishproc
same for eg
. fetch 1 (internaldate)
* 1 FETCH (INTERNALDATE "30-Jan-2003 19:23:41 +0000")
. OK Completed
How can I see the result of fetch?
I have not used the C library, but the perl interface is similar so I
suspect this approach will work for you. What I did was add a callback
with an empty string for a trigger. The callback gets called on every
line, and you can parse it as you please.
$imap->addcallback({-trigger=>'',-callback=>sub {
my [EMAIL PROTECTED];
if($a{-text}=~ /RFC822\.SIZE\s+(\d+)/i) {
$totmsg++;
$totbytes+=$1;
if($1>100000) {
$largemsg++;
$largebytes+=$1;
}
$largest=$1 if($1>$largest);
}
}});
($rc,$text)=$imap->send('','','FETCH 1:* RFC822.SIZE',$mbx);
--
John A. Tamplin Unix System Administrator
Emory University, School of Public Health +1 404/727-9931