Years of mail, on your own disk.

Moving to MailCode from another mail client

Apple Mail · Outlook · Thunderbird · eM Client · Spark · Mailspring · MailMate · Postbox

Most of a switch is not a migration. If your account is Exchange, Microsoft 365 or IMAP, the mail is on the server, and adding the account to MailCode brings all of it down — there is nothing to export. Importing matters only for the mail that exists only on your disk: a POP account, an On My Mac mailbox, a Local Folder, an old PST. This page separates the two, client by client, and says plainly where MailCode cannot read a format.

First work out which kind of mail you have

Open your current client and look at where a mailbox sits in its sidebar.

Under an account name (an email address)
Server mail. Add the same account in MailCode and it syncs down — Exchange EWS, Microsoft 365, or plain IMAP. Nothing to export, and nothing you can lose by trying, because reading a mailbox does not change it.
Under On My Mac, Local Folders, Archive, or a file you opened by hand
Local mail. It exists in your old client's own storage and nowhere else, so it has to be exported into a format MailCode reads. That is the rest of this page.

Do the account first and the export second. Once the server mail is syncing you can take your time with the local part, and you will usually find that half of what you were about to export is already there.

What MailCode reads

FormatReadUsually comes from
.pst / .ostYes, directlyOutlook for Windows
.emlYes, single files or whole treesAlmost every client, by drag or export
.msgYesOutlook, saved one message at a time
maildirYes, including cur and newUnix servers, some power clients
mboxYes, each mailbox as a folderApple Mail export, Thunderbird, Postbox
.emlxYes, from Apple Mail's library folderApple Mail's own storage
winmail.datYes, opened from the message it arrived onOutlook, when it sends Rich Text mail
.olmNoOutlook for Mac

All of these come in through the same command, File → Index EML Files…: point it at a file or a folder and it finds the mail inside, subfolders included. The one format it does not read is .olm. For that, select the messages in Outlook for Mac and drag them to a folder in Finder, which writes one .eml per message, then point MailCode at the folder.

Apple Mail (Mac Mail)

Apple Mail keeps its mail as .emlx files inside ~/Library/Mail, and exports a mailbox as an .mbox. MailCode reads both.

To skip the export, point the same command at ~/Library/Mail and MailCode reads the .emlx files directly. One limit: when Apple Mail has stored a message's attachments separately (a .partial.emlx), the message and its text come across without those attachments.

Outlook for Windows

This is the easiest of all of them, because Outlook's own file format is the one MailCode reads directly — there is a longer walk-through at how to open a PST file on a Mac.

The file's own folder tree comes across as it stands — Inbox, Sent Items, the subfolders you made in 2014 — into whichever destination folder you pick. Attached messages, and bodies that exist only as HTML or RTF, come with it.

Outlook for Mac

Outlook for Mac exports .olm, not .pst, and MailCode does not read .olm. There are two ways around it:

Thunderbird

Thunderbird stores each folder as one mbox file, and MailCode reads those directly. Quit Thunderbird, then choose File → Index EML Files… in MailCode and pick the profile's Mail/Local Folders folder (Thunderbird's Help → Troubleshooting Information → Profile Folder shows where it is). Each Thunderbird folder becomes a folder in the archive, subfolders included, rather than everything landing in one heap.

eM Client

eM Client exports .eml natively: File → Export → Export mail to .eml files. Choose a folder, then import that folder in MailCode. Folder structure is preserved on both sides.

Spark, Mailspring and other IMAP front-ends

These keep no archive of their own that outlives the account — they are windows onto an IMAP or Exchange mailbox, with a local cache underneath. There is nothing to export. Add the account in MailCode and the mail arrives.

The thing to check before you delete the old client is whether it was doing anything to the server your new one has to keep doing: a Spark shared inbox, or a send-later queue that has not fired yet.

MailMate

MailMate is IMAP-backed, so the account route applies. For anything held locally, dragging a selection to Finder gives .eml files, and MailMate's own Export Messages… can write the same. Its mbox output is read too.

Postbox

Postbox keeps its mail in mbox files the way Thunderbird does, so the Thunderbird route applies: quit Postbox, then point File → Index EML Files… at its profile's mail folder.

Indexed where it sits, or copied in

When you import, MailCode asks one question worth understanding, because it is hard to change your mind about later:

Indexed (the default)
The archive keeps the index and reads each message back from its file. Fast, small, and the folder has to stay connected — which is the right answer for an external SSD full of old mail.
Copied into the database
Bodies and attachments are copied into the archive and the files are no longer needed. Fine for a few thousand messages; a very large archive imported this way makes the database enormous.

One folder holds one kind or the other, never both. Re-running an import over the same folder is safe — files already in the archive are skipped, so a second pass adds what is new instead of duplicating what is there.

What is actually different once you are across

Everything below follows from one decision: the mail lives on your disk, in a full-text index, as it arrives.

What you give up

Worth knowing before you move, not after.

The order to do it in

  1. Add your accounts. Let the first sync finish.
  2. Import the PSTs — those need no conversion.
  3. Export anything local from the old client as .eml, keeping its folder structure.
  4. Import that folder, with Keep the folder structure on disk left on.
  5. Run a duplicate scan. Years of imports and re-syncs leave copies, and one pass across the whole archive marks them in the list.
  6. Keep the old client installed until you have searched for something you know is there and found it.

Step six is not a formality. It costs nothing and it is the only honest way to know the move worked.

macOS 12 or later. Free 14-day trial, then a one-time purchase. If a format on this page is blocking you, say so — the import list grows from what people are actually holding.

© 2026 MailCode. Made in Ankara. MailCode Releases Support Privacy Terms Disclaimer Contact