My sister had been using Hotmail for years. Lately she decided, like so many smart people eventually do, that she wanted to switch to Gmail. The best email providers make it easy to leave. Microsoft certainly doesn't make it easy.

There's a standard set of problems associated with switching email addresses. First, you have to tell everyone your new address. Then you have to make the old one forward to the new one. Finally, if you have a big contact list and a bunch of saved messages, you sure as heck want them to come with you.

Hotmail gives you no way to export those messages and contacts. It doesn't let you set up forwarding either. Those fargin bastiges have it rigged so that you can never really switch to some other email account: you'll have to keep using theirs, too. As far as I know, Hotmail can't as yet prevent you from mass-emailing everyone in your address book to say you've moved — but a cynic would surmise they're probably working on it.

So Hotmail isn't civilized. Fine. Enough carping. If you really want to be done with them, you can. With the right tools, it's not too much work.

  1. Go to your Hotmail Contacts screen and have it give you the “Print View.” This makes it easy to copy and paste. Sorry, but I have to be hand-wavy here: copy the whole table and somehow massage it into CSV (Comma-Separated Values) format. Exactly what you'll have to do depends on how your browser formats the copied text, and how you'll do it depends on where your skills lie. I used vi and a handful of global replace operations; any other reasonably powerful text editor would do; or if you're an Excel wizard, knock yourself out.
  2. Once you have a CSV file, import it into Gmail. You might have to tweak the field names so they match up.
  3. You've moved your contacts. Now for the email. FreePOPs is an open-source toolkit that presents a POP3 interface to many webmail services, including Hotmail. For our purposes, if you have a server that's always online, it's best to run FreePOPs there. (It can also run on your Mac or PC, if necessary.) Install FreePOPs; configure it to run on localhost, port 110; arrange for it to be run from the system startup scripts; and start it up. Set up stunnel to accept incoming SSL connections from the Internet on port 995 and connect to your instance of FreePOPs.
  4. At this point, you're running a POP3-over-SSL service. It so happens that Gmail can download mail from other POP accounts and supports SSL. What are the odds! Set that up, pointing it at your server on port 995. (Note that you're telling Gmail your Hotmail password. If it's anything like any of your other Internet passwords, you might want to change it first.) While you're there, have it “Label incoming messages” as “Hotmail inbox” so you'll notice when someone's still using your old address.
  5. Soon, Gmail will have downloaded the contents of your Hotmail inbox. Plus, it'll continue to check your Hotmail at regular intervals automatically.
  6. If you have other Hotmail folders, we can slurp them down too. (Neither POP3 nor Gmail has the concept of folders, but no biggie.) Say you've got a “Hippos” folder with your favorite unflattering photographs of coworkers. In Gmail, go back to Settings -> Accounts -> Get mail from other accounts, then click “edit info” and set “Label incoming messages” to “Hippos”. Back in Hotmail, go to the Hippos folder, select all the messages, and move them to the Inbox. When Gmail makes its next run, it'll grab those messages and label them appropriately. Repeat as necessary for your other Hotmail folders.

That's it! All your mail and contacts are in Gmail, and your Hotmail effectively forwards there.

For all the digs at Hotmail, it's really just another case of getting what you pay for. Let's hope Google can keep outperforming the adage.

Update: Windows Live Hotmail has an “Export contacts” option that produces CSV.