Review: Mailsmith 1.1.2
Mac OS 7.5 or later
Mac TCP 2.0.6 or Open Transport 1.1.2 or later
About 5 MB of application memory; I recommend 10 MB
With quality free e-mail clients like Microsoft Outlook Express, established standards like Eudora, and development suspended on perhaps the most popular e-mail client, it’s hard to believe that anyone--let alone a small company like Bare Bones Software--would decide to enter such a saturated market. But I, for one, am glad they did. In a world of free and shareware e-mail clients, the $79 Mailsmith is a bargain that brings innovation to a product category that seemed to be stagnating. Although the product still has performance problems and lacks a few key features, its innovations in the areas of text processing, filtering, and searching set new standards by which other e-mail software must be judged.
Mailsmith’s interface will seem familiar but different to users of Claris Emailer and Outlook Express. The Mail Browser offers a three-paned view with a list of mailboxes along the left, a list of messages in the selected mailbox at the top, and the body of the selected message at the bottom right. You can arrange the dividers between the panes any way you want, and the message view can be completely hidden, leaving a two-pane browser similar to Emailer’s. Additionally, you can read your mail using the more compact Mailbox List. Double-clicking a mailbox’s name opens up a two-pane browser for it (with a list of messages and the body of the selected message). Double-clicking a message in a browser opens it in its own window.
The Three-Pane Mail Browser
One thing you’ll immediately notice is that Mailsmith makes good use of screen space. It fits considerably more information into a browser or message window than most other e-mail programs. The Details pane, which appears in the mail browser and the top of each message window, can be displayed as a thin strip showing To, From, Subject, Date, and Priority; or as a four-tabbed panel that lets you access all the important information while reducing clutter. The rightmost tab lets you set the Notes for a message; nearly every object in Mailsmith has a Notes field which you (or AppleScripts you write) can use to store whatever information you want.
The Expanded Details Pane
Mailsmith’s interface is by no means as cozy as Emailer’s. You won’t find many icons; the buttons are purely textual and can be hidden to save space. Whenever there is color, it serves a purpose (depending on your personal taste you will find this look unfriendly or uncluttered). Mailboxes containing unread Urgent messages are colored in red. Labeled messages can be colored in the browser. You can set names and colors for 24 custom labels, in addition to the seven Finder labels.
Mailsmith’s interface feels very polished, especially for a 1.x product. Most of it is non-modal, so you can get your work done freely and easily. Drag and drop is pervasive: you can use it to rearrange messages, mailboxes, and filters, as well as text. You can even drag display text like the subject and date from a collapsed details pane into your message. The mailbox list behaves exactly the way you’d expect it to. If you drag a message onto a mailbox with collapsed sub mailboxes and linger on the disclosure triangle, it expands for you. I actually find this an improvement over Emailer’s spring-loaded folders, which always seem to open when I don’t want them to.
The message lists in Mailsmith’s browser work very well. The only real problem I see with them is that the columns are not resizable or reorderable, although you can control whether the label and priority columns are present. Contextual menus are implemented nicely, and will help ease the pain of Emailer users who miss the button for filing an open message.
Finally, nearly all of Mailsmith can be controlled with the keyboard, from cycling tab panels, to selecting push buttons and radio buttons. The message lists and recipient pane especially have very intuitive keyboard controls. My one complaint is that it can be a little hard to tell which pane of the mail browser has the keyboard focus.
Each of Mailsmith’s mailbox files is a powerful object database. Mailsmith indexes a message whenever it is stored in a mailbox file. Indexing is necessary for Mailsmith’s powerful query functions, which are accessed through two types of queries. Simple Query lets you search all mailboxes or a specific mailbox for text contained in the Subject, Body, or From of a message.
Advanced Query offers more complex database functions. As before, you can search all mailboxes or a single mailbox; you can also search an individual mailbox and all its sub-mailboxes. I find this very useful. You can search specific parts of a message (Body, From, Subject, Notes, Date Sent, Label, Priority, etc.) as well as status bits (Sent, Read, Has Enclosures, Answered, etc.). In addition to searching based on “contains,” you can use more complex criteria such as “starts with” and “does not end with.” For numeric message fields (like dates) there are a full range of comparison criteria like “is less than” and “is greater than or equal to.” Of course, all these criteria come with plenty of options like case sensitivity and full word matching.
Even better, you can construct criteria involving Grep patterns (regular expressions) and approximate matches (fuzzy searching). Grep lets you match patterns of text like dollar amounts, URLs, and IP addresses (really, this is just scratching the surface of what it can do, but it should give you some idea). Approximate searching (with an adjustable accuracy) is useful if you don’t know exactly which words you’re looking for. It can find words even if they are misspelled and find phrases even if the words are broken across lines.
Finally comes the crown jewel of Mailsmith’s query functions: you can create any number of criteria and connect them with logical ANDs, ORs, and OR ELSEs (exclusive ORs).
The price to be paid for Mailsmith’s fancy searching is that indexing incurs extra overhead that other e-mail clients do not have. As a result, tasks that involve storing messages in database files (i.e. downloading mail and moving messages between mailboxes) take several times longer than with other clients. There are workarounds that can help compensate for this loss in speed, such as closing the mail browser window and keeping individual mailbox files small. However, Mailsmith still crawls compared to the competition. I find it unusable on anything slower than a PowerPC 604-based Mac and personally wouldn’t want to use it full-time on anything slower than an iMac (233 MHz PowerPC G3). Also, the program likes to have more than 5 MB of RAM for itself; it performs better with 10 MB.
In addition to the speed hit, indexing greatly increases storage requirements. A mailbox with 1000 messages took up 10 MB of disk space in Mailsmith. The same mailbox took only about 3 MB in Outlook Express. Although it would be nice if infrequently used mailboxes could be indexed on-demand (à la FileMaker Pro) to reduce storage requirements or on a schedule (à la Sherlock) to increase responsiveness, I cannot really fault Mailsmith for its storage needs. One thing that could be improved, however, is that Mailsmith updates the modification date of mailbox files, even if they have not been changed. This wreaks havoc with incremental backup software--each mailbox file is always backed up. (And the problem is exacerbated by the increased storage requirements described above.)
Further, as long as the Mail Browser or Mailbox List is open, Mailsmith keeps all your mailbox files “open.” Mac OS’s ancient File Manager imposes a limit on the number of files that may be open concurrently (about 350), so you may encounter problems if you have a lot of mailboxes, fonts, or drive partitions. Finally, and this may be related, Mailsmith mailboxes seem more prone to corruption after a system crash than other mail programs I have used. (Although, having separate mailbox files for each “folder” means that corruption is likely to be isolated to a single mailbox; Claris Emailer stores all its mail in a single database file, so corruption, when it does happen, is much more serious.) Fortunately, Bare Bones provides a Rebuild command for salvaging and repairing mailboxes.
Overall, I find that the pluses to Mailsmith’s database greatly outweigh the minuses. Most users of Claris Emailer or Microsoft Outlook Express who are used to archiving messages to a FileMaker database will find that with Mailsmith this is not necessary. In fact, Mailsmith’s queries are vastly superior to FileMaker’s. Of course, if you do want to archive to FileMaker, for instance to make a message archive available over the Web, an AppleScript to do so is available (but not included). Other than that, you would probably only want to move messages out of Mailsmith when the mailbox files grow large and slow down the user interface. I keep two copies of Mailsmith: one with messages less than a month old (for speed) and one with all the rest of my mail (for searching).
Coming from Bare Bones Software, it is not at all surprising that Mailsmith includes many of BBEdit’s text processing functions (you can even use BBEdit plug-ins). What you may find surprising after using Mailsmith is just how bad text processing is in other e-mail clients. Mailsmith makes composing e-mails a joy. It includes commands for left- and right-shifting text, exchanging characters and words, changing case, and entabbing and detabbing. Perhaps Mailsmith’s most useful text processing features are Wrap, Un Wrap, and Rewrap. Un Wrap strips carriage returns to reflow text. Wrap inserts carriage returns to wrap text to specific widths. Optionally, it can indent, first-line indent, or reverse indent the text (to make a bulleted list, for instance). Rewrap first unwraps, then it wraps according to your settings. The difference is that it understands different levels of quoting and rewraps accordingly.
Mailsmith also includes most of BBEdit’s text preferences. You can set separate widths for composing and reading messages, soft wrap text, control auto indenting, and show invisibles. Each level of quoted text can have its own color, and there is an option to use Emailer’s quote colors (although I prefer Mailsmith’s).
Messages can be saved outside the database, and stationary files are supported. Using stationary files you can set boiler plate text as well as combinations of sending account, priority, and signature preferences--then recall them on demand. Mailsmith also supports using stationary for replies, complete with “cookies” like %sender% that you can use like mail merge fields. These cookies are also available for creating custom attribution lines.
Mailsmith’s Find dialog is similar to BBEdit’s. It supports normal finds and Grep finds. Whereas BBEdit support multi-file finds, Mailsmith instead supports approximate (fuzzy) finds. There are commands for setting the find and replace strings without entering a dialog, and you can use Find Selection (or command-option-double-click on a word) to quickly jump from a digest table of contents to the actual message. Unfortunately, there is no incremental Quick Find--a feature I find very useful in BBEdit.
Probably Mailsmith’s greatest innovation is its filtering. While most e-mail clients let you create a list of mail actions or rules that are applied to incoming messages, Mailsmith lets you create a distributed filter hierarchy. In Mailsmith, filters can be associated with mailboxes. (If a filter is not associated with any mailbox, it can still be applied manually.) This greatly simplifies filter management. Although there is a monolithic Filters List window, most of the time it’s easier to Get Info on a mailbox to edit the filters attached to it. If you have a lot of filters, you’ll immediately appreciate that you don’t have to search through a long list to find the ones you want; you’ve already organized them according to the mailboxes they apply to. Further, the Mailsmith method eliminates the need to tell Mailsmith whether a filter should be applied to incoming mail, outgoing mail, or both. If you want a filter to apply to incoming mail, attach it to a normal mailbox; to make it apply to outgoing mail, attach it to an outgoing mailbox.
Incoming messages are run through Mailsmith’s filter hierarchy. Whereas in other e-mail clients filters transfer messages to mailboxes, in Mailsmith filters can also attract messages. When a new message is received, the filters attached to the incoming mailbox are applied. The filters for each other top-level mailbox are applied in turn, until a filter deposits (attracts) the message to a mailbox or transfers it to another mailbox. Transferring a message stops other filters from applying to it. Depositing a message moves it down one level in the mailbox hierarchy; then the next level of mailboxes can apply their filters.
This all probably sounds confusing, but rest assured that it is in fact much more intuitive and powerful than filtering in other e-mail clients. Mailsmith users can reap maximum utility from a few specialized filters, reusing them often. The need for complex If/Then/Else criteria (although you can have as many of them as you want) is greatly reduced because of the filter hierarchy. For instance, when I used Claris Emailer I had a dozen or so filters for my ATPM mail. Each one began with a line saying to only apply the filter to mail originating from my ATPM mail account. Mailsmith handles this elegantly. My ATPM mailbox attracts messages received from my ATPM account. The other ATPM filters are attached to sub mailboxes of the ATPM mailbox so they apply to all messages that are deposited in the ATPM mailbox--and to those messages only.
So what can a filter do? Well, to decide whether a filter applies, you set up the same sort of criteria list as with the Advanced Query. If a filter does apply, then its actions are executed. A filter can have an unlimited number of actions ranging from Transfer and Deposit to setting labels and priorities, replying, redirecting, extracting enclosures, and running an AppleScript. Alas, there are no built-in filter criteria or actions for checking to see whether the sender is in an address group or for adding the sender to a group. A great feature is the Make a Filter command, which lets you quickly create a filter whose criteria match a selected message.
You can use the Mail menu to check or send mail from all accounts. To check a specific account you must use the E-Mail Accounts window, which doubles as a repository for mail server preferences. You also use this window for setting the schedule for each account. Alas, scheduling is limited (better than Outlook Express’, much worse than Emailer’s). You can set a repeat connection interval for each account separately, and you can configure each account to only connect when certain Location Manager sets are active, but that’s about it.
Mailsmith can send and receive mail simultaneously from all your accounts, and filter each message individually as it arrives. Thus you can actually read messages one-by-one as they are downloaded. After new messages arrive you can have Mailsmith play a sound (it comes with some excellent ones), run an AppleScript, or notify you in the menu bar or with a dialog. Further, you can do just about anything you want in Mailsmith while it is downloading messages.
Unfortunately, Mailsmith’s multi-threading is such that downloading mail from two accounts simultaneously can really grind your system to a halt, especially if you have a fast Internet connection. New in Mailsmith 1.1.2 is the ability to disable automatic filtering, which helps, especially on slow connections. Disabling the automatic mail and filter logging also speeds things up.
You can send messages immediately after writing them, or queue them to be sent at the next connection. Unfortunately, unless you use an AppleScript, you cannot edit queued messages. You can save drafts of messages, but they must be stored as files in the Finder; there is no drafts folder in the mail browser, as with Emailer and Outlook Express.
Mailsmith has good support for mail enclosures. You can encode enclosures in many different formats, including BinHex, Base64, UUEncode, AppleDouble, and AppleSingle. You can even select different encoding methods for different enclosures of the same message. If you have the StuffIt engine installed, Mailsmith can automatically compress enclosures before sending them. You can drag files onto the enclosures tab of a message to attach them, or use a multi-file select dialog to add enclosures to a running list. Alas, there is no way to attach an entire folder to a message unless you first compress it into a single file.
Enclosures for both sent and received messages are stored in Mailsmith mailbox files. I find this very useful for keeping an exact record of messages I’ve sent or received; it’s so easy to lose enclosures if they are only saved in the Finder. Users who don’t want their attachments taking up space in the database will have to delete them using an AppleScript. Enclosures can also be auto-extracted and expanded to the Internet Config downloads folder with a filter action. You cannot, however, double-click an attachment’s icon in its message window to open it with the appropriate application (as in Emailer).
Mailsmith’s address book is weak. You cannot associate more than one e-mail address with a contact (unless you create two address book entries or use the Notes field). The interface for dealing with groups is cumbersome; you cannot open a window for a group that lists its members. Instead, you must expand its disclosure triangle. This makes it very difficult to add contacts to a group, since you must select the contact and drag-scroll all the way up to drop it into the group. On the plus side, the auto-complete address lookup in message windows works great, as does the incremental address book search.
Mailsmith has excellent support for AppleScript. Most of the program’s functions are available in its dictionary, and it even supports AppleScript recording. AppleScripts are an excellent way to customize your e-mail client, automate repetitive tasks, and “fix” features you wish were implemented differently. For instance, Mailsmith ordinarily quotes a message’s body when you forward it. I prefer the Emailer-style behavior of wrapping the forwarded message with dashed lines and listing the original subject, sender, and date. In only a few minutes (and I am by no means an AppleScript expert) I was able to write a replacement forward command that one-upped Emailer by supporting multiple messages. Another good script example is one Christian Smith of Bare Bones wrote to auto-delete messages that had been in the trash for a specific number of days.
Mailsmith has some of the best documentation and support that I have seen. It comes with an excellent manual (printed and in PDF format) and balloon help. There have been four updates since version 1.0 shipped less than nine months ago, each one greatly improving Mailsmith, and each one free. The updates are even accompanied by a Delta Manual that thoroughly explains the changes and fixes since the previous version and documents the new features. Bare Bones Software provides excellent technical support via e-mail and phone. They also host the Mailsmith-Talk discussion list where Mailsmith users can discuss the product and share tips, tricks, and scripts.
Mailsmith includes utilities that make it easy to switch from another e-mail client. It can import complete folder-message hierarchies from Eudora, Emailer, and Outlook Express. In addition, it can import from and export to Unix mbox format. There is also a demo of Mailsmith available at http://web.barebones.com/free/free.html.
I recommend trying any new e-mail client for at least two weeks so that you can fully adjust to the way it works, rather than see every deviation from what you’re used to as a flaw. That said, there are a few things that you may not be able to adjust to when using Mailsmith:
- Mailsmith does not store the name of the account that received a message, as Emailer and Outlook Express do. There is a criterion for matching the name of the mail server that received the message (stored in the headers), which you can use to prioritize or label messages by account, however this is not very useful if you have more than one account with the same mail server. Also, if you receive a message with unlisted recipients, you may not be able to tell which account received it.
- IMAP and LDAP are not yet supported.
- There is no support for reading HTML mail.
Mailsmith offers a refreshing new perspective of what an e-mail client can (and should) be. In many ways, it seems as if the designers of Mailsmith have never used another e-mail client before: Mailsmith breaks out of the evolutionary rut that other e-mail clients confine themselves to, but it also lacks features that users have come to expect.
Mailsmith has an excellent interface for mail reading, and there is no better tool for locating messages you want to read than Mailsmith’s Advanced Query. Mailsmith’s distributed filtering is revolutionary and extremely elegant. Likewise, there is no better mail composition environment than Mailsmith (except perhaps BBEdit).
With so much to like, then, I wish I could give Mailsmith more than a Good (three out of five). But the fact remains that the above-mentioned cons, particularly the performance problems, prevent it from being the top-notch e-mail client I know it has the potential to be. However, if the improvements since the first version are any indication, by this time next year Mailsmith just may be unbeatable. At present, though, you will have to decide whether Mailsmith’s strengths are important enough to you to outweigh its weaknesses.