Thanks Brian and Mark

A combination may well help. 

I am not for this project needing ALL but have been using UNSEEN. The mailboxes 
we are referencing have around 100-1200 emails coming in from O2 every morning 
at 4am. These then get processed at 5am to update their databases. I will have 
to first find the FIRST UNSEEN UID and then run a process to get the UIDs of 
the next 100 (and repeat) till they run out I guess. Once I’ve built the list 
of UIDs I can carry on as normal processing each one in turn. 

Finding the first unseen UID though seems to be the next issue I’m going to 
have to overcome. A never ending stream of workarounds. 

Sean Cole
Pi Digital Productions Ltd


eMail Ts & Cs


> On 23 Mar 2020, at 16:48, Mark Waddingham via use-livecode 
> <use-livecode@lists.runrev.com> wrote:
> 
> On 2020-03-23 15:21, Pi Digital via use-livecode wrote:
>> Thanks Mark, your input here is appreciated.
>> This reply in that forum wasn’t helpful, was it
>>> > Known bug #90 was reported in 2014. However it still occurs in 2019. Does
>>> > anybody know how to overcome this situation?
>>> Yes: by fixing the code!
>> In the thread it talks of pagination (as do you) but doesn’t give an
>> example of how to do it. How would we implement this in LC? If it is
>> not giving us the correct count how do we know how many pages we will
>> have to allow for and so on.
> 
> That's where I got the reference to pagination from - as I said it's not a 
> particularly useful post there. I suspect the person replying assumed the 
> person asking the question had a detailed understanding of IMAP queries (my 
> knowledge of interacting with IMAP servers is more than it was earlier on, 
> but still not really sufficient to give any detailed advice).
> 
> The tsNet support for IMAP comes entirely from cURL - so it works pretty much 
> the same as the 'curl' shell command.
> 
> I found this with a quick search which might help:
> 
>  <https://gist.github.com/akpoff/53ac391037ae2f2d376214eac4a23634>
> 
> The queries listed there at least appear to give ways to query the count of 
> things in a mailbox.
> 
> This page also looks like it might be helpful:
> 
>  <https://nbsoftsolutions.com/blog/introduction-to-imap>
> 
> Also this has some more info on using CURL to talk to IMAP:
> 
>  
> <https://debian-administration.org/article/726/Performing_IMAP_queries_via_curl>
> 
> Having pondered this a bit, I'm not sure that even if cURL guys fixed the 
> above bug it would actually make a difference to what you need to do to have 
> 100% correct code. The method of fetching all UIDs of messages in a mailbox 
> at once is completely unscalable - imagine an INBOX with 100,000s of messages 
> for example over a slow/flaky connection; or an INBOX which has a lot of 
> traffic and changes exceptionally frequently; or sits on a heavily loaded 
> server (you can imagine that no server would like to be polled for complete 
> message lists all the time by lots of clients).
> 
> The IMAP protocol appears to be designed to be treated as something to use to 
> synchronize local and remote state. Indeed, there is quite an extensive 
> description of how to 'synchronize with an IMAP server' in an RFC:
> 
>  <https://tools.ietf.org/html/rfc4549#page-18>
> 
> Indeed, it states in one place:
> 
> <quote>
>  The following is an example of the first FETCH:
> 
>   C: A011 UID fetch 131:* (FLAGS BODYSTRUCTURE INTERNALDATE
>       RFC822.SIZE)
> 
>   Note 1: The first FETCH may result in the server's sending a huge
>   volume of data.  A smart disconnected client should use message
>   ranges (see also Section 3.2.1.2 of [RFC2683]), so that the user is
>   able to execute a different operation between fetching information
>   for a group of new messages.
> </quote>
> 
> The unique id used to perform the sync operation is the UID; you can fetch 
> ranges of those as they are 'guaranteed' to always increase and never be 
> re-used. (The only caveat is the UIDVALIDITY, which is basically a 
> cache-generation number - i.e. if the UIDVALIDITY changes you have to dump 
> your local cache and start from scratch as it means the meaning of individual 
> UIDs has changed).
> 
> Not sure how much the above helps...
> 
> Warmest Regards,
> 
> Mark.
> 
> P.S. I've been chatting to Seb about the issue (he reported the bug 
> originally) - he has confirmed that the problem affects Kognition's IMAP code 
> too (that component is still in development at this stage which is why it 
> hadn't been noticed until I asked him to check). I had hoped the approach 
> there might have been slightly different and so provided a viable workaround, 
> but it would appear that it is not the case :(
> 
> -- 
> Mark Waddingham ~ m...@livecode.com ~ http://www.livecode.com/
> LiveCode: Everyone can create apps
> 
> _______________________________________________
> use-livecode mailing list
> use-livecode@lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription 
> preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode
_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to