It seems that I rarely encounter issues with Mail hanging while talking to Gmail. Maybe I’m lucky, but it seems that my sister has more problems with the combination than anyone else I know. Today she called me almost panicked as her husband’s machine wasn’t getting mail. Turns out there were a number of issues contributing to the problem. The solution was relatively simple once I figured out the issue.
- Too many messages in All Mail. There were over 37000 messages in the All Mail folder on Gmail, so when he selected All Mail, Mail happily started retrieving all 37000 messages (several gigabytes). This never finished.
- Closing the computer kept restarting the process.
- Corrupted IMAP cache directory.
After a bit of searching I came across a reference to the .OfflineCache folder. This is a hidden folder in ~/Library/Mail/IMAP-nameofaccount/. You have to use Terminal to access it. Removing this folder (when Mail is not running) will cause Mail to start recaching the IMAP mail. This would unstick Mail, but the problem would come back once the All Mail was hit.
I remembered that Gmail labs added some advanced IMAP options. I turned on Advanced IMAP options in Gmail labs. This brings up a few very important options.
Once that option is turned on (and saved), Forwarding and POP/IMAP has an extra option.
If you set the limit, Mail will at most show 1000 messages. This significantly reduces the number of messages that come down. Deleting the cache folder, setting this option, and then restarting Mail (and waiting a few minutes), cleaned up everything. However, there was one more option that I missed that would reduce that 1000 down to none (viewing All Mail in Mail is kind of a waste). Click on Labels and you can turn off the Labels that are shown in IMAP. Basically turn all of them off.
Presto! Problem solved.