Latest posts.

MailMate 1.8 Released

The list of changes since version 1.7.2 (r3905) is very long and all the details can be seen in the release notes. Version 1.8 is best described as a major maintenance release including numerous bug fixes, stability improvements, and minor feature enhancements. The following are some of the most interesting new features:

  • New: Redirection of a message using “Message ▸ Redirect” (⌥⌘E) or the redirectMessage: key binding. This opens a special composer window which only allows editing a fixed set of headers. MailMate also adds a $Redirected flag to any redirected messages.
  • New: Support for using an external editor to write emails (built-in support for TextMate, Sublime Text, and MacVim).
  • New: HTML signatures can be configured in the “Signatures” preferences pane. They work in both plain text and Markdown mode. (More details in the manual.)

At the time of writing, Apple has not yet released Yosemite (OS X 10.10), but I do expect this version of MailMate to be compatible.

Here are answers to what I expect to be frequently asked questions (some duplicates from an older post as well):

  • Any new graphics in version 1.8?

    No, but it’s funny that you ask. I have just setup a page in the MailMate store to allow users to explicitly contribute to the purpose of making me hire a graphics designer to change that. Read more about that here.

  • Is a license key bought in the store today also valid for version 2.x?

    Yes.

  • When is MailMate 2.0 released?

    I don’t know, but it probably matters more to me than to you. I need it for marketing purposes. You need it for the features, but the development of MailMate is an open process and you can use new features in the betas/releases of MailMate 1.x by enabling 2.0 features in the General preferences pane. If feeling adventurous, you can even fetch cutting edge test releases by holding down ⌥ when clicking “Check Now” in the Software Update preferences pane.

  • What happened to the crowd funding money?

    I still have most of the (post-tax) money and they ensure that I’ll be able to continue working on MailMate full time for at least another 6 months. Probably much more than that, but this depends on the daily sales and I don’t want to make promises I cannot keep.

Interview: Making an Email Client

Thomas Borowski recently did an interview with me and this is now available in the most recent episode of his “Think, Make, Sell” podcast. This is actually the first interview I’ve given about MailMate and it’s also my first podcast appearance. Time will tell if it’s also my last podcast appearance — it turns out I’m the kind of person who cannot listen to myself and therefore I’m not sure exactly what I said in the podcast. If you have any questions related to the interview then you can leave them in the comments of this blog post.

On the subject of questions, I’m frequently answering the following two questions related to MailMate 2.0:

  • Is a license key bought in the store today also valid for version 2.x?

    Yes.

  • When is MailMate 2.0 released?

    I don’t know, but it probably matters more to me than to you. I need it for marketing purposes. You need it for the features, but the development of MailMate is an open process and you can use new features in the betas/releases of MailMate 1.x by enabling 2.0 features in the General preferences pane. If feeling adventurous, you can even fetch cutting edge test releases by holding down ⌥ when clicking “Check Now” in the Software Update preferences pane. Teaser: The test release from today includes an experimental solution for users having to use HTML signatures due to company policy (which is a problem since MailMate is plain text/Markdown only).

Crowd Funding Roundup

Background

Late October I faced a financial ultimatum. I had to soon start making more money working on MailMate or I would have to stop working on MailMate full time. Before starting to look for other jobs I decided to do a crowd funding experiment primarily aimed at the existing users of MailMate. This was fairly successful since more than $13,000 was pledged, but it was quite a bit less than my (unofficial) estimate of $50,000 needed to be able to work on MailMate in all of 2014.

Indiegogo

Nevertheless, I decided to create a “real” crowd funding campaign at indiegogo. I changed the goal to be “MailMate 2.0” which corresponded to a minimum of 6 months of development in 2014. This also allowed me to set a goal of $25,000 instead of $50,000 which I now considered as unrealistic. Using “2.0” in the goal description made it an easier “sell” (I’m a bit worried that it also sets unrealistic expectations).

This campaign was a huge success. The goal was reached within a week and more than $42,741 were raised in total. Even more importantly, MailMate gained a lot of exposure and new users. In retrospect, it has been a bit of a marketing stunt.

The numbers

As noted, the total amount raised was $42,741. The following table shows which perks were selected by the 677 contributors:

Perk Contributors Min. amount Total amount
License key for MailMate 1 60 $25 $1,512
Single user license key 528 $50 $27,046
Two single user license keys 24 $90 $2,111
Family license key 23 $150 $3,450
Site license key (5) 8 $200 $1,650
Site license key (10) 2 $350 $700
Site license key (20) 0 $600 $0
Site license key (50) 0 $1,250 $0
Site license key (100) 2 $2,000 $5,000
Site license key (100) + Bundle 0 $5,000 $0

Note that the numbers do not add up. This is because a contributor can pay a larger amount than required for the perk selected. Also, $3,383 were contributed without selecting a perk (though some times by error).

By far, the most popular perk was the license key for MailMate 2.0. This alone would have been enough to reach the $25,000 goal.

For those interested (probably other crowd funders), there are several fees to be paid. After Indiegogo (4%) and PayPal have taken their share then around $38,100 is left and PayPal takes another 2.5% just to convert to Danish kroner. The remaining amount is about what corresponds to $37,150. Then comes the Danish income taxes. Note that I’m not complaining. Just laying down the facts.

The future

As promised in the campaign, the contributed amount ensures that I can work on MailMate for at least 9-10 months of 2014. It might be more if regular sales are better than they were in 2013. I have no release date for 2.0, but in practice it is not of major importance. MailMate is updated regularly and this currently includes features intended for version 2.0. Right now you can enable preliminary versions of some of these features in the General preferences pane of MailMate.

Now, what happens when/if I run out of money again? Well, then it’s back to square one. I might even try the crowd funding approach again.

MailMate 1.7.2 Released

Only a few hours left of the very successful crowd funding campaign and as a small “thank you” I am releasing version 1.7.2 of MailMate. It is mostly minor changes and fixes, but there is also a few new features:

  • Integration with Calendar/iCal, BusyCal, and Fantastical.
  • Integration with Evernote, Things, and The Hit List.
  • Support for SmartyPants when using Markdown with HTML generation.
  • Drag’n'drop email/mbox files to a mailbox to trigger importing.

The integration with other applications require that you enable the experimental 2.0 features in the General preferences pane of MailMate.

Go to the release notes to get all the details.

Primary Crowd Funding Goal Reached

Over the weekend the crowd funding campaign reached its primary goal of $25,000 and it has since increased to more than $27,000. Yet again, thanks to everyone who helped make this happen! Development of MailMate is now guaranteed for the first 6 months of 2014. Maybe more if regular daily sales increase. If you never read about the background for this campaign then you can see it here.

It only took 6 days to reach the goal, but the campaign continues for another 30 days (I cannot stop it even if I wanted to). The rule of thumb is that for every additional $5,000 I can work full time on MailMate for a month. If you wonder about development speed then look at the existing release notes. I would call it steady.

I’ve promised to start distributing license keys to contributors as soon as possible. It appears I only have the email addresses of contributors (and a fake/anonymous name), but a license key is based on the real name of its owner. Therefore, the distribution requires first sending emails forth and back to get the required user details. I need to automate this (using MailMate, of course), but it might take a few more days. Ironically, I am also currently swamped by emails. Be patient.

Crowd funding status (indiegogo)

I didn’t quite know what to expect from the crowd funding campaign when I launched it Monday. I knew I would get contributions from my existing users, but I didn’t know whether or not I would be able to spread the word about the indiegogo campaign. It was quite clear that my existing user base was not sufficient.

You see, I’m really bad at marketing — or maybe that’s not the right way to put it. It’s more like, I’m really bad at marketing something that is not perfect. I am my own worst critic. I see all the flaws, the bugs, the non-optimal workflows. I see all the missing features including those I have planned without anyone asking for it. My to-do list is a mile long.

This is why it has been great to see other people write about MailMate. They can do what I cannot do. Write about the good things without caring too much about the bad things. They can express the enthusiasm that I drown in notes about problematic corner cases.

Therefore, I would like to thank anyone who has ever written anything about MailMate in articles, blogs, comments, or Twitter posts. A special thank you to Macdrifter, Macstories, AppStorm, RunAroundTech, and aptgetupdate.de for writing about MailMate and the campaign. It made a huge difference. I would also like to thank those who have “sold” MailMate to friends, family, or colleagues.

This burst of gratitude was motivated by the more than $21,330 now contributed to the campaign by 295 backers. Most of the contributions have been $50 pledges, but maybe you noticed a substantial spike in the contributions yesterday:

$2000 pledge

The price of the perk was $2,000, but the actual contribution was $3,000 (the price of a perk can be increased by the backer). This contribution was made by long-term user of MailMate, Apparent, makers of Doxie. They deserve a special thank you.

I may be bad at marketing, but I’m very good at honesty. If you have any questions about the crowd funding campaign or the future of MailMate then you are welcome to ask in the comments.

Crowd Funding Campaign Launched

A few weeks ago I launched a crowd funding experiment and I already wrote about the results. The conclusion was that it was worth a shot to launch a campaign on a real crowd funding site.

Help me get a flying start by going to indiegogo. Please also help me spread the word wherever you think it is appropriate. The short link for the crowd funding page is simply http://igg.me/at/mailmate.

Compared to the crowd funding experiment I’ve changed a few things. The goal is now to fund the time needed to finish version 2.0 of MailMate. This requires a minimum of 6 months of 2014 and therefore I’ve set the initial fixed goal to $25,000. A fixed goal means that I get nothing if the goal is not reached. Anything beyond $25,000 increases the period I am guaranteed to work full time on MailMate. The exact period depends on daily sales, but a rough estimate is an additional month for every $5,000.

I am also releasing MailMate 1.7.1 today. See the release notes for the details. The highlights are:

  • New: Added option in the General preferences pane for enabling experimental 2.0 features (rules and commands).
  • New: A Gmail label column is shown in the Tags preferences if the user has any Gmail accounts. Any tag with a Gmail label defined is not fetched as an IMAP mailbox.
  • New: Hold down ⌃⌥ when selecting a message in the message list to select all related messages. The result depends on the column selected (the selection matches the search conditions for double clicking).
  • New: The selectWithFilter: key binding has been changed to accept a format string. This can be used to select messages related to the current message. For example, here is the definition for a shortcut (⌃⌥D) to select all messages from the same sender and delete them: "^~d" = ( "selectWithFilter:", "from.address = '${from.address}'", "moveToMailbox:", "trash" );

I also added a replyMessage action for bundle commands (undocumented 2.0 feature) since I needed it to be able to generate “canned” replies for all the emails I’ve received as part of the crowd funding experiment. Based on a simple 7-line property list file (no GUI yet), a reply can be generated with a prefixed thank-you-note including a “Dear”-string based on the From header. With a single keystroke I can now generate these messages in the Drafts mailbox and then, if I need to, edit some of them before sending. How is that not worth a contribution?

Results of the Experimental Crowd Funding

On October 17th I launched an experimental crowd funding campaign and I promised to share the results. This is what I’ll do in this blog post.

First of all, I didn’t reach my (unofficial) goal, but I also didn’t expect to do so since MailMate has a small user base and I only used the blog, Twitter, and the mailing list to spread the word. I didn’t push all the buttons possible. Publicity has been fairly limited, but it has been sufficient to both increase download numbers and sales considerably during the two crowd funding weeks.

The results

At the time of writing I have received emails with pledges to contribute a total of $13,430. This is from 131 individual contributors which corresponds to a very nice average of a little more than $100. The most popular amount contributed is $50 as seen in the following table:

Amount ($) Contributors
3000 1
500 2
200 8
150 2
100 40
50 64
30 4
25 3
20 6
15 1

The 78 contributions of $50 or less amount to 26.5% of the total amount. This is less than what is contributed by the top 3 contributors (30%), but this is only because of the single major contribution of $3000 (22.5%). The 40 contributions of $100 also amount to 30% of the total amount.

Another interesting fact is which email client the contributors used:

Email client Contributors
MailMate 64
Apple Mail 30
MailMate Trial 19
iOS Mail 5
Other 5
Unknown 8

Almost half are existing MailMate users (48.8%) and another 14.5% are trial users. In addition to that several known (to me) MailMate users are in the Unknown/iOS groups. All contributions of $150 and above are from current MailMate users.

The most wanted features

In the contribution email I also asked for the 3 most wanted “features” among a list of known popular requests. There were quite a few requests for features not on the list as well, but none of them were requested by multiple contributors.

Share of users Features
45.0% Rules (move, tag, etc. incoming messages)
32.1% Conversation view (display all messages of a thread in the message view)
26.7% Scripts/Commands (perform actions based on selected messages)
26.7% Optimize (improve speed and memory usage)
25.2% Improve search interface (make it faster using the keyboard)
23.7% Beautification (mailbox graphics, message themes (css), toolbar icons, …)
16.8% Integration with more applications (like for OmniFocus)
15.3% Integrate tagging with Mavericks tagging
14.5% Flat threading mode (group related messages without creating a hierarchy)
11.5% Just focus on fixing bugs
9.9% Optional CSS styling of Markdown messages
9.2% Message redirection
8.4% More settings on a mailbox level (e.g., reply-behavior, treading style, send later, …)
7.6% Message coloring (as part of the Tags support)
5.3% Optional HTML editor for the composer

Almost 1 out of 2 users would like to have rules. Fortunately, items number 1 and 3 are already experimental features for version 2.0 of MailMate. Item number 2 is already one of my high priorities. The only surprise on the list is that the least popular item is an HTML editor, but this probably reflects the fact that these are the features wanted by existing users and not what others need to start using MailMate.

Many of the emails also contained some wonderful comments about MailMate and statements of support. Some contributors stated that they wanted to contribute even though they could hardly afford it. I am deeply thankful for that kind of generosity.

Now what?

The crowd funding page is still online and newcomers are welcome to use it. I am currently preparing a “real” crowd funding page (including a stated goal) which I plan to launch next week and I’ll notify anyone who has sent me a crowd funding email. When this happens then I’m going to push all the buttons I can to direct attention to the crowd funding site and I’ll appreciate all the help I can get to spread the word.

Thanks for all the emails. I am deeply impressed!

Mavericks, Gmail, Apple Mail, and MailMate

Mavericks and Apple Mail

Mavericks (OS X 10.9) has been released and I’ve just read a very interesting article (TidBITS) about how Apple Mail has changed behavior with regard to how it handles Gmail accounts. Apparently this has, so far, not been a great success. Having been through the same implementation problems as the Apple developers I would like to share some of my thoughts on the issue of handling Gmail accounts.

I have a love/hate relationship with Gmail with an emphasis on the latter and I’m sure the same is true for the Apple Mail developers. Both Apple Mail and MailMate have tried to treat Gmail accounts as if they used the IMAP standard, but this is tricky since it is very non-standard — and I only use the term “non-standard”, because Google does this on purpose. Objectively, when they claim to provide IMAP access then the correct wording should be “extremely buggy”.

Nevertheless, Gmail is here to stay and both the Apple Mail developers and I know that we have to do whatever we can to allow Gmail accounts to nicely co-exist with standard IMAP accounts (yes, alternatives to Gmail do exist).

Duplicate messages

The main problem with Gmail is that labels are mapped to IMAP mailboxes. This means that any message with multiple labels is present in multiple IMAP mailboxes. A standards-compliant (offline) email client is going to handle that by fetching the message multiple times. Bandwidth is wasted, space is wasted, and weird things can happen when you move or copy messages. The worst Gmail mailbox is the “[Gmail]/All Mail” mailbox. This contains all messages not located in the trash or spam mailboxes. In MailMate (and previously in Apple Mail) it was best to ignore this mailbox and that is what happens by default in MailMate. If all messages have at least one label then all messages are still available in MailMate. Unfortunately, this is not always the case. I’ll get back to this issue further below.

Ignoring “All Mail” does not solve the problem with messages with multiple labels. Some users never use multiple labels and simply move messages as if the labels were simple mailboxes. This works fine in both Apple Mail (earlier versions) and MailMate, but it’s not a general solution working for all users.

Multiple labels in MailMate

Recently, I implemented a workaround in MailMate for the problem of multiple labels. It is currently an experimental solution and you can enable it following the instructions in the release notes for version 1.7. In short, MailMate can be told to handle specific Gmail labels as if they were tags. If a label is handled as a tag then MailMate automatically ignores the corresponding IMAP mailbox. Tags are already supported by MailMate (no integration with Mavericks yet) and uses IMAP keywords on standard IMAP servers. An added benefit of this is that you can move messages between Gmail accounts and other IMAP accounts and the tags are preserved. This is great if you are planning to migrate…

The “All Mail” problem

The remaining problem in MailMate is the “[Gmail]/All Mail” mailbox. It might contain messages which are not present in any other mailbox. Such messages are not available in MailMate. The only workaround is if the user makes sure that no such messages exist — and this can be tricky when using other email clients than MailMate (such as iOS Mail).

Apple Mail has now “solved” this problem by fetching all these messages and then identify duplicates across mailboxes to make sure they only store each message once. They are essentially trying to make Apple Mail behave like Gmail itself does. Personally, I think this is a dangerous path. Gmail IMAP behavior is non-standard, largely undocumented, and controlled by a single company. In other words, handle with care.

I’ve been bitten by sudden Gmail behavioral changes in the past and I won’t go down the same path as Apple Mail (and other email clients), but I’ve got an idea as to how to solve this remaining problem without major changes in MailMate.

An untested theoretical solution

When fetching a message, Gmail also allows the email client to fetch all the Gmail labels for the message. This would allow MailMate to identify the messages which are present in any other mailbox(es). If the IMAP code treated these messages as non-existing then the “All Mail” mailbox could become a mailbox containing the exact set of messages not present in any other mailboxes. The only minor problem would be that “All Mail” is not really “all mail”, but MailMate already has the “All Messages” virtual mailbox.

Maybe I’ll have time to implement and test this idea in the future. It might require a bit of funding. For now, I just wanted to share my thoughts on the issue.

Update October 27th: I implemented this solution in the latest test version of MailMate. Handle with care: You can fetch the test version by holding down ⌥ when clicking “Check Now” in the Software Update preferences pane. After that you need to subscribe to “[Gmail]/All Mail”. Details are provided in a mailing list message.

Handling Multiple Identities

An often overlooked feature of MailMate (based on user feedback) is the flexible handling of multiple identities. In this blog post I’ll try to describe this feature in more detail. You might find it useful even if you do not have or think you need multiple identities.

In this context, an identity is an email address and, optionally, an associated name. A simple example of multiple identities is when you have multiple IMAP accounts with a single identity for each account. This can be handled by most email clients and mainly requires that an identity can be selected in the composer window.

It is more interesting when you have multiple identities for a single IMAP account. You might be forwarding messages from several POP3/IMAP accounts to a single IMAP account or you might be generating numerous email addresses to avoid spam, but the example I’ll use here is based on my own primary use: Wearing many hats when running a one-person business.

I’ll use example.com instead of freron.com in the following examples to avoid email harvesting, but other than that it is very close to my own use of multiple identities.

Here are some examples of email addresses for which all messages are going to the same IMAP account:

mm-info@example.com, mm-feedback@example.com, mm-sales@example.com, mm-support@example.com, mm-bugs@example.com

Using different email addresses for different purposes makes it easier to filter incoming email, but it also makes it easier for a business to grow, for example, if ever needed it would be easy for me to redirect all sales related questions to a different IMAP account and let someone else answer them.

The mm- prefix is used to avoid directory harvest attacks, but I don’t always remember to use that. For example, I also have mailinglist@example.com.

All of the addresses listed above are, in various ways, publicly available, but I also have a huge number of addresses which I do not share publicly. Nevertheless, my IMAP account settings are quite simple:

Email Addresses

I use my own name as the default “Full Name”, but I could also have chosen to use “Freron Software”. The only explicitly listed email addresses are the ones I use to write new emails from the account (as opposed to replies for which I need most of my addresses). The list of email addresses could also contain explicit names for individual addresses:

mailinglist@example.com, Freron Software <mm-support@example.com>

The explicitly listed email addresses are the ones included in the “From” popup list in the composer window. More importantly, this also means that all of my other email addresses are not shown in the popup list. This helps keep the list short and clean.

MailMate still needs to know all addresses in order to handle replies properly and this is where it gets tricky and difficult to handle for most email clients. To some extent, it is possible to derive the correct “From” address for a reply using the information provided in the headers of a message. For example, here are some of the headers of a message sent to mm-info:

X-Original-To: mm-info@example.com
Delivered-To: mm-info@example.com
Received: from out1-smtp.messagingengine.com (out1-smtp.messagingengine.com [66.111.4.25])
    by example.com (Postfix) with ESMTPS id 2BD4C76004
    for <mm-info@example.com>; Fri, 11 Oct 2013 01:30:17 -0400 (EDT)

Earlier versions of MailMate tried to automatically use such headers to derive the “From” address, but despite many subtle improvements it never worked for all users. In the end I replaced it all with the “Address Pattern” setting. This is a regular expression describing all email addresses which belong to the account owner (see the manual for examples). If such a pattern is provided then MailMate uses it for comparing with addresses found in the X-Original-To, Delivered-To, X-Delivered-To, and Received headers of any replied message.

The address pattern for my IMAP account is .*@freron\.com which simply means that any email address containing @freron.com is one of my email addresses. When replying then the “From” header automatically uses any such address found in the replied message (and the “Full Name” provided for the corresponding account). Furthermore, MailMate also uses the “Address Pattern” to automatically generate a follow-up message if I reply to one of my own sent messages.

Whenever you need to send a new message from an email address which is not explicitly listed in the account settings then you can use the “Customize…” option in the “From” popup in the composer window. The text field shown even offers to complete your address using known addresses from your previously sent messages.

Custom From

The final thing to note is not directly related to the above, but it is a useful feature when dealing with a lot of email aliases. The “Sent Messages” mailbox automatically includes a set of dynamically created mailboxes. One mailbox for each “From” address found. This is done using the “Submailboxes” feature:

Sent Submailboxes

Crowd Funding Campaign

Reviews

Macworld wrote:
  • As email search abilities go, this seems less like bringing a gun to a knife fight, and more like thundering into that particular duel at the controls of a helicopter gunship.
  • Needless to say, the program never crashed, glitched, or gave me any sort of trouble during my tests. MailMate does not know weakness.
About.com wrote:
  • MailMate is a refreshingly efficient way to deal with mail in IMAP accounts, all with handy keyboard shortcuts, superior search and precise smart folders.
  • As a testament to its raw power, MailMate does not stop at From: or body text, of course; instead, you can have it match just names or first names, email addresses, domain names, parts of domain names, quoted text and what not.
Lifehacker wrote:
  • Search is amazing, providing you with a ridiculous amount of control.
  • Practically everything can be accessed using the keyboard.

User Quotes

Rob Schumann (MacUpdate) wrote:
  • I […] felt immediately at home with its much more capable filtering system that can be directed at any folder, not just the inbox, and the ability to construct complex any/all rules that can be nested multiple levels deep.
  • […] in general it just feels significantly faster than Mail.app
David Levy (email) wrote:
  • I've been stress testing MailMate with a variable and highly intermittent connection. […] My overall assessment is that MailMate has been markedly superior [to Apple Mail] in this use modality […]
Tom Borowski (blog) wrote:
  • […]this way of handling signatures is far superior to any other approach I’ve seen so far. Why hardly anyone implements it in this way is a mystery to me.
TheBrix2008 (MacUpdate) wrote:
  • […] on first run, MailMate spotted my Mail.app IMAP settings, prompted for import, then got to work without fuss.
  • it has a phenomenal array of filtering, statistics and views […] My favourite is “Correspondence”, which picks out all email from your current correspondent and lists it in a separate pane… instantly.
  • The author should be rewarded for having the courage to start from scratch.