Low-Level Customization
All of the following is subject to change. It is essentially a peek into some of the raw inner workings of MailMate and you could very easily make changes which would cause MailMate to malfunction. Even if something does work, it is not unlikely that it is going to malfunction in future updates of MailMate.
That said, the following is also an opportunity to play with aspects of an email program which are most often strictly off limits.
Integration with other applications can be done using so-called bundles.
General
Most of the following files are located in the Resources
folder of MailMate. A custom version of a file can be made by making a copy in ~/Library/Application Support/MailMate/Resources/
and then edit it. In some cases, the copy replaces the original and in others, the copy extends the original.
With the exception of cascading style sheet (css) files, the files are in the ASCII property list format.
Message Headers
Apart from normalization of message headers, all information needed from message headers is obtained using the regular expressions in specifiers.plist
(currently located in Frameworks/OakMIME/Resources
). It contains specifications of parsers and shorthands.
Parser
A parser specifies how to identify the various parts of a message header. The names of these parsers can then be used in queries/filters to reference the data of interest in a simple manner.
The following are examples of a From
header containing the same email address:
From: Foo Bar <foo@example.com>
From: <foo@example.com>
From: "Foo Bar" <foo@example.com>
From: foo@example.com (Foo Bar)
From: foo@example.com
Hiding the complexities of the above, it is possible to reference the email address by simply writing from.address
. Since parsers also exist for the various parts of an email address, it is even possible to write from.address.domain.toplevel
(or implicitly by just using from.toplevel
).
Currently, you can both specify new parsers and override existing parsers (extreme care should be taken if doing the latter). The format of the parsers is informally specified in the file itself. Remember: The format is subject to change.
Shorthand
A shorthand specifies how a special header name (a shorthand) can be used to reference multiple headers. Current examples are #recipient
which merges to
, cc
and bcc
and #mailer
which merges x-mailer
, user-agent
and x-newsreader
.
Headers PopUp
The headers and parsers available are exposed in MailMate via the headers popup shown, e.g., when specifying the filter for a smart mailbox. A default set of headers shown in this popup is specified in headersPopUp.plist
. More headers can be found using the Other… menu item in the popup. Descriptions for these headers are specified in headerDescriptions.plist
(currently very incomplete). Both files can be customized.
Layouts
[…]
Replaceable and extendable:
headersFormatting.plist (short/long formatting for the headers view)
Layouts/
Composer/
default.plist
Mailboxes/
correspondence.plist
default.plist
statistics.plist
threadArcs.plist
Message/
default.plist
Toolbars
Not customizable yet:
composerToolbar.plist
mailboxesToolbar.plist
messageToolbar.plist
toolbarItems.plist
Messages Viewer
Mailboxes Outline
A set of standard mailboxes are defined in the file standardMailboxes.plist
and an additional set of default example mailboxes are defined in defaultMailboxes.plist
. The latter is copied to Mailboxes.plist
which is located in the application support folder (~/Library/Application Support/MailMate/
). Changes to the standard mailboxes are saved as deltas in Mailboxes.plist
. Currently the GUI does not allow one to define custom mailbox icons for the mailboxes, but this can be done by editing Mailboxes.plist
(you MUST quit MailMate first). In particular, one can reuse the graphics from Mail by adding the following:
macOS 10.12-10.14:
deltaMailboxes =
(
{ imagePath = "/Applications/Mail.app/Contents/Resources/SidebarInbox.icns";
uuid = "INBOX";
},
{ imagePath = "/Applications/Mail.app/Contents/Resources/SidebarDrafts.icns";
uuid = "DRAFTS";
},
{ imagePath = "/Applications/Mail.app/Contents/Resources/SidebarArchive.icns";
uuid = "ARCHIVE";
},
{ imagePath = "/Applications/Mail.app/Contents/Resources/SidebarSent.icns";
uuid = "SENT";
},
{ imagePath = "/Applications/Mail.app/Contents/Resources/SidebarJunk.icns";
uuid = "JUNK";
},
{ imagePath = "/Applications/Mail.app/Contents/Resources/SidebarTrash.icns";
uuid = "TRASH";
},
{ imagePath = "/Applications/Mail.app/Contents/Resources/SidebarFlag.icns";
uuid = "FLAGGED";
},
);
Note: On macOS Catalina (10.15), the above must be changed to /System/Applications/Mail.app/...
.
Extendable file defining the set of possible counters for each mailbox (defaults are All, Unread, Flagged, and Unreplied):
countMenu.plist
Messages Outline
Extendable:
MmMessagesOutlineView/outlineColumns.plist (available columns in messages outline view)
Message Display
Extendable stylesheet for WebView:
MmMessagesWebView/stylesheet.css
Note that the stylesheet can also include specialized behavior for printing messages. Here is an example changing the font used for (plain text) messages:
@media print {
body {
font: 12pt "Courier";
}
}
Composer
Replaceable:
MmMessageTextView/display.plist (foreground/background coloring of quoting levels)