gmail/poplib: quickly detecting new mail

Jean-Paul Calderone exarkun at divmod.com
Sat Jul 1 12:03:16 EDT 2006


On 1 Jul 2006 08:29:51 -0700, LJ <ljcell at gmail.com> wrote:
>Hello,
>
>I'm trying to monitor my gmail account to know when I have obtained a
>new email.  It seems that once I have logged in, I should be able to
>call the stat() function repeatedly to see how many messages are in my
>inbox.  The problem is that this number does not seem to update until I
>have logged out, and logged back in.  In other words, I run the code
>below, send myself an email, and observe that the count does not
>change.  If I kill the program and restart (hence logging back in),
>then the total count is now updated.  The other function calls seem to
>work the same way (eg "list" just shows the same list, even when I know
>new mail has arrived).
>
>Questions:
>1. is this a standard behavior of pop protocol? (to give me the same
>results for any API call on a single login?)

Yes.

>2. OR is this a peculiarity of gmail

Nope.

>3. is there a more efficient and correct way to see know when I have
>received a new mail?  Currently my "working" method is to log out and
>log back in.  With this method, I can get about 17 refreshes per minute
>but anything faster and Gmail blocks me for a few minutes. (yes it is
>important to my application that I have very frequent refreshes).

This is not the purpose for which POP3 was intended.  POP3 is expected
to be used when a latency of several minutes doesn't make much difference.
If you look at the capabilities gmail's POP3 server publishes, you even
see they are declaring a five minute login delay.  This is intended as
a hint to clients that logins more frequent than one per five minutes are
not allowed.

Jean-Paul



More information about the Python-list mailing list