Since IMAP is slow and downloading the whole message could take a while, why not use gmail's rss feed for new messages that gives you the sender, subject and email abstract in xml?
This should improve the speed of the app greatly.
url is https://mail.google.com/mail/feed/atom using basic authentication, if you want to access a particular label append it to the url like
I can help with the code as well :)
Thank you for your interest in GmailAssistant! I appreciate your suggestion on using the Gmail Atom feed. Unfortunately, I think this approach has some shortcomings:
- Gmail apparently publishes only 20 unread messages in the feed
- The program must "pull" the feed periodically, whereas IMAP supports the IDLE command which allows the Gmail server to "push" new mail arrival notifications to the program.
Btw, is the program running particularly slowly? The first time GmailAssistant encounters a new mail, it takes slightly more time to retrieve the mail (subject, snippet, etc); subsequently, the program simply matches mail UIDs and should be much faster.
well, I need something to tell me when I have new messages so I really don't care much if I don't see more than 2 (even 5 would be too much for me) in the popup, I'll open my email anyway. I believe the feed provides the total count even if not all message details are there so that's more important to me. Plus with the feed you don't need to keep track of what was unread before and has been read now, it just tells you all current unread messages which should make the logic a bit easier.
I went over the code briefly and if I'm not mistaken you reconnect or at least re-authenticate each time you check the mail so you don't seem to be using the push functionality.
The app itself runs fine, I think it's more of gmail's imap implementation is not that good and authentication and email retrieval is slow when you have few hundred emails (even if all of them are old) - it takes about 2 sec for each folder/label with imap vs. sub-second on the rss feed. Or maybe it's because most of my emails have a large body that contains the previous emails (lots of re:'s).
In any case, your app - your decision, I'll just make the changes for myself, I like how the app looks and is arranged and I was hoping someone else would manage the changes for me :)
Thanks for your reply.
The IMAP IDLE command ("push") is indeed used --- GmailAssistant is informed of new mail arrivals, but it still re-authenticates whenever it fetches mail. This is done because Gmail has strict limits on the frequency of mail fetches; re-authentication seems to reset this counter.
I'm not comfortable with the 20-mail limit of the Gmail Atom feed, even though the fetches are significantly faster. Besides, switching from IMAP to Atom would require fundamental changes in GmailAssistant, as you've noted.
Anyhow, if you'd like to share your changes, I will be happy to help you in managing it. We could put it on SourceForge and maybe even consider expanding its use to other Atom feeds.
Sign up for the SourceForge newsletter:
You seem to have CSS turned off.
Please don't fill out this field.