I have spent considerable time over the last year or so trying to get my data and systems set up to have email, contacts and calendars available both online and offline on both my main computer, my mobile device and online as a guest user on others computers. All the while keeping my inbox clean from spam and bulk mail, contacts synchronized and access my preferred user-interfaces and applications. I've recently been able to get this pretty close to perfect. In this article I will describe the technologies I use and how I've configured them to achieve this.

Hardware & Software

While the set up I have is not specific to the hardware I use, not all of these options will be possible or the same with different hardware. Nevertheless, if you're using a blackberry instead of an iPhone, or Linux instead of OS X, or Yahoo mail instead of Gmail, most of this is probably still possible. The iPhone is certainly one of the most powerful PDAs available. I can't compare directly with other PDAs (I've never owned others), but it's critical features for me and this article are it's tight integration with Apple software, ease of use, wide range of apps that extend it, lack of Windows Embedded, and it's geek factor. The MacBook Pro, as well as being sexy and a very fine & powerful machine, also allows me to use Mac OS X – my preferred development and work environment – without hassle. OS X comes with Apple's Mail.app, Address Book.app and iCal.app – all of which integrate smoothly with the OS X desktop, iPhone and a number of web services and protocols. Further, they do not come at an additional cost, like some alternatives. As for web software, Google's offerings are difficult to beat for their good usability, high-interoperability, significant poularity and wide range of data services and protocols. Gmail & Google Calendar are my preferred applications and user interfaces for their respective tasks. For contact management I prefer Apple's Address Book over Google Contacts.

Configuration

This is a general step by step guide to configuring the above hardware, software and webware to keep your data available and synchronized in all the environments.

Gmail

  1. Create or configure one or more Gmail account/s as desired.
  2. Set up your From email addresses in Gmail and select "Reply from the same address the message was sent to" in Gmail > Settings > Accounts
  3. Set up filters and labels in Gmail to keep list emails out of your inbox, and keep urgent emails in your inbox.
See Email Management Strategy Phase 2: IMAP with Gmail iPhone and Thunderbird for more info on how to set up Gmail filters and labels to route less important out of your inbox.

Mail.app

Once you're happy with Gmail, filters and labels, set up Mail.app (or a similar IMAP mail client) to access your Gmail email via IMAP. See Gmail > Settings > Forwarding and POP/IMAP to enable IMAP and get full documentation for this.

iPhone

Rather than configuring mail settings on your iPhone, tell iTunes to synchronize mail settings to your iPhone, and also tell it to overwrite your iPhone's mail settings next time it syncs. As well as simplifying configuration of your iPhone, this approach allows you to continue to use the very good Mail.app integration in iPhoto, Automator workflows and elsewhere on the OS X desktop. I find this very valuable for quickly sending time reports from SlimTimer to clients. The integration goes well beyond mailto: links. If you don't use Mail.app or another email client that iTunes can synchronize your iPhone's mail settings to, then you can configure your iPhone directly to connect to your Gmail IMAP account. This is a little more tedious. Note that emails are never synced from Mail.app to your iPhone, only mail settings (email accounts, servers, user names, passwords) are synced. Also iPhones only retrieve up to 200 messages at a time over IMAP (or 50 by default – You can change this in iPhone > Settings > Mail > Show). Also it needs some nudging to get email bodies, and doesn't recurse into IMAP folders (Gmail labels). So it's not very good for retrieving your email for offline reading, but still workable.

Offline email client

You could use Mail.app for your offline email needs, and in fact I used to. However if you prefer to Gmail's UI, then you'll need to remember to sync Mail.app before you head offline, and you'll be frustrated with Mail.app's relatively clunky UI. Here's a better way;
  1. Install Google Gears
    • If you're using Fluid.app (which you should be if you use Gmail as your main email client on OS X) install Google Gears in Safari. It then becomes available to Fluid.app through Safari / webkit.
  2. Enable offline access at Gmail > Settings > Labs > Enable Offline, then Gmail > Settings > Offline. You may need to enable Labs in your Google Apps for Your Domain settings, or switch to "US English" in Gmail > Settings in order to make these options available.
Offline synchronization takes some time to set itself up, but you can continue to use Gmail and configure other things meanwhile.

Contacts

Contacts synchronization can be configured from iTunes. Plug your iPhone in, then go to iTunes > Your iPhone > Info > Contacts, check "Sync Google Contacts" then click the Configure button. You can also configure this from Address Book.app's preferences. You may need to configure in both – I'm not certain. Unlike IMAP, you don't need to do anything in Gmail for this to work.

Calendars

  1. Set up your Google Calendars anyway you please.
  2. Calendar synchronization to iCal.app over the CalDAV protocol can be configured with Google's instructions. You can add several different calendars to iCal.app this way.
  3. Tell iTunes to synchronize some or all of your calendars to the iPhone at iTunes > Your iPhone > Info > Calendars.
Much like the scenario with Gmail-and-Mail.app, you can create events offline in iCal.app, but will need to remember to sync iCal.app before taking it offline, and again when you get online again. A better solution is to create a Fluid.app instance for Google Calendar and enable offline support for it. Click Offline in the top right of Google Calendar. In order to update your iPhone's Calendar app events, you need to synchronise iCal.app then sync your iPhone with iTunes. Note that in iCal.app new events in existing CalDAV calendars will by synchronised back to Google Calendar, but that new calendars you create in iCal.app will not be created on Google Calendar. I deleted all mine in iCal.app after I manually imported them to Google Calendar. As a result of this, you can not create events on the iPhone and have them synced back to Google Calendar. Note that Google has some beta support for Microsoft's Exchange protocol (for Mail, Contacts and Calendar syncing). Mail syncing is not yet supported by Google, only one calendar can be synced, and syncing of contacts requires you disable Apple Address Book syncing. Therefore it is no use to me, but may be to others – particularly those not using Address Book.app, with only one calendar or those needing to create events on the fly on the iPhone.

Multiple Gmail Accounts

I have another similar but separate setup for my personal email; Another Gmail account, and another IMAP account in Mail.app (which is also synced to my iPhone). I synchronize contacts across the 2 Gmail accounts manually now and then, but don't really need to.

Conclusion

My mail is always synchronised, available and up to date both offline on my computer and online on Gmail. I can sync recent mail to my iPhone manually. I can read and write mail on any of my devices whether offline or online, or any other internet device that's online, and have them all synchronised when I get online again. Similarly my calendars are always synchronised, available and up to date both offline on my computer and online on Google Calendar, and online with my iPhone (using Google Calendar in Safari). I can sync my iPhone manually, though this requires I sync it with both iTunes and open iCal.app. I can view and edit events when offline with the iPhone and have changes synchronised, but not create new events. I can add or edit my contacts at any time on any device, though choose to use Address Book.app by preference, or iPhone Contacts app if my computer is asleep or not with me. Changes are synced between Gmail (Google Contacts), Address Book.app and iPhone Contacts app whenever I sync my iPhone with iTunes. As well as the iPhone's native apps (Mail, Calendar, Contacts) which are useful for accessing and editing this data offline I can also use Google's mobile web apps to access Gmail and Google Calendar when I'm online. The main annoyances are pretty minor really;
  • New events created on the iPhone are not synchronized back to Google Calendar
  • Getting the iPhone to synchronize mail messages for offline reading is a little time consuming.
  • Event synchronization to the iPhone requires running iCal.app for a minute before plugging in and synchronizing the iPhone.
Was this helpful? For more useful insights from the CivicActions team about using email efficiently, see Gregory Heller's 2-part series on Email Management Strategy;
  1. Developing A Personal Email Management Strategy
  2. Phase 2: IMAP with Gmail iPhone and Thunderbird