Scribe is a small portable email client with an integrated contact database and calendar. It supports all the major internet mail protocols and uses international standards where possible. Scribe doesn't required installing or uninstalled and can be used from a removable drive without reconfiguration. It comes with a Bayesian spam filter and translations to many different languages. Updates are published regularly to respond to problems and to add features.

Because Scribe runs on Windows, Mac or Linux you can take your mail with you when you change operating system. And don't worry about viruses, Scribe protects you from the usual security holes in other email clients with it's own virus safe HTML control and executable attachment protection.

What's New

  • Native HTML reply support.
  • Faster folder loads in mail3 folders.
  • Better IMAP handling. There are long term bugs that need fixing.
  • Cocoa/64bit port stability.

I was using Gtk3 to develop for Mac/64bit but it turns out that it's leaking memory and resources like a sieve so I can't release a commercial product based on children's toys. Going to re-target to the native Cocoa API. Cocoa has it's own special form of reference counting hell. But at least it's better than GTK.

Known issues:

  • Some IMAP email arrive but don't load until a restart. (Potential fix in place... waiting to see if it still happens.)
  • Sometimes the content of one IMAP email ends up in the cache file of a different recent email. (Very rarely, you can right click on the folder -> refresh if it does happen)
  • Multi unicode char Emoji aren't listed as insertable characters in the HTML editor.

2.4.21 Changes:

  • Scripting:
  • Added a Scripts\ScribeScripts.h file that contains the item type and folder magic numbers. So instead of writing "GetFolder(0xaaff0002)" you can include ScribeScripts.h and then use "GetFolder(ScribeItemContact)".
  • Fixed the compiler to resolve nested #define values.
  • Also added compile time simplification of scripting #define values, if there is round brackets present in the value, and any variables also resolve to something. Otherwise the old behavior of resolving the expression at run time is used.
  • New callback type "OnLoad" will fire when the application is loaded it's mail stores and folders. Async loads of IMAP folders will happen after though. If you need a script to access a Mail3 folder on startup, this is the way.
  • Deprecated the 'MsgBox' function, use 'MessageDlg' instead.
  • Optimized the sorting of folders. One particular test case I have of ~20k IMAP email went from around 5 mins to 5 seconds. It's about getting the data into the right format for qsort_r to do it's thing.
  • Also during folder loads the loading item now shows some progress.
  • Oh and IMAP folder loads are now threaded. In that the UI doesn't lock up while the load happens. Little things...
  • Fixed the flashing vertical scroll bar when displaying text emails.
  • Fixed crash in filter evaluation when using filter values starting with period character.
  • Added remote URL calendar support back in (ie vCalendar feed). Right click in the calendar list and "Add Calendar by URL". It's read only. Although if you open a remote event, then edit and save it'll save an edited copy in your default calendar folder. Seems reasonable to me.
  • Added UI for calendar start of week setting.
  • Fixed single quotes in the 'from' header cause back slashes to appear in IMAP email.
  • Fixed multiple issues saving webdav contacts.
  • Bayesian filter now uses the spam folder path in Manage Mail Stores -> System Paths -> Spam. It was a hard coded string before.
  • Bayesian filter: If the user sends an email to someone it used to white list that email address, so any reply would not be accidentally classified as spam. That is now fixed.
  • Fixed a crash resulting from incorrect removal of CSS style comments. Thou shall not overwrite the NULL terminator on a C string.
  • Added a new mail DOM object field "ReceivedDomain" that looks up the last "Received: from" header and extracts the IP address or domain. Useful for filtering.
  • Improved shutdown behavior for the webdav thread when loading contact and calendar items. It no longer blocks the application from quitting when in it's loading phase.
  • The find window layout doesn't glitch back and forth anymore.
  • Implemented better management of the splitter layout on the main window so that when you resize the window to hide say the split between the mail preview and mail list it keeps the splitter visible, and therefor also the scroll bar resizes to the available space. Before you would lose the splitter and the bottom of the scroll bar of the mail list. On low resolution screens this was very unhelpful.
  • Cancelling at the print preview stage doesn't cause an error dialog anymore.
  • Added a page range setting to the HTML print preview window.
  • Fixed images loading in the HTML print preview.
  • [Mostly] Fixed printing larger and more complicated HTML email. The HTML control has this feature where if it's taking too long to render it just stops. This is great for email in the preview panel so it doesn't "hang" the app while browsing email. But terrible if you want to print. So I've bumped the default max paint time to 350ms (from 250) and also defaulted it to 5000ms for printing. It's still possible that some super complex / long HTML document will take longer than that... but it's a reasonable start.
  • Large amounts of Bayesian filter processing doesn't lock the user interface up anymore. It's pushed into a queue that gets processed with a progress bar. You can even cancel it.
  • Updated the Emoji images to have more resolution and the more recently added characters.
  • Fixed the mail.bodyashtml parsing. You can configure the reply/forward formats to use that instead of bodyastext to keep the HTML formatting. Well at least the part of the formatting that the HTML edit control supports. Which is far from everything. But things like colors, font sizes/weights etc are. Things like tables and advanced formatting are not.
  • Fixed forwarded attachments so they keep their content ID and charset when copied into the new email. This means that HTML images for instance will work in forwarded email or replies. (Ie when using bodyashtml in the reply/forward format).
  • Fixed Emoji being inserted at the default character size (from the source image: 32px) in the HTML editor. Now they match the current font size.
  • The multi-threading of IMAP loading and saving has create a bug where you move an email into a folder that hasn't loaded, it overwrites it's internal state such that it doesn't remember any previous email. This should now be fixed. However if you do see this in previous versions, right click on the folder and "refresh" gets you back to a good state.
  • Fixed the IMAP thread trying to select the "(null)" folder.
  • Fixed a crash in the POP3 code. IDK how that managed to survive this long without me seeing it. Maybe cause I use IMAP pretty much full time.
  • Updated the OpenSSL library linkage to the current version: v3.0.1, which is now also the minimum version required. This specifically fixes the windows build to work with the latest OpenSSL. You will have to update to OpenSSL v3.0.1 on Windows.
  • Window: fixed a crash when a drag and drop operation gets stuck waiting for an IMAP email to load and the user initiates a second drag.
  • Also while IMAP objects are waiting to load (say for an export or dnd operation) a dialog pops up showing the user that the application is busy.