Clone wiki

TotalMessage / Home


TotalMessage extension adds enhanced message pane header customization, header editing, message re-threading, and compose header customization.


Thunderbird 60 - TotalMessage v4.1

Features include:

  • Complete header customization in the message pane

    Headers are displayed based on a map you create. Use Options|Preferences -> Display and select the Headers panel to build your custom layouts. You may also right click on the header pane or hover the TotalMessage button, and select Customize Headers to open the panel. <br/>

    Mappable headers are automatically collected from messages received and viewed. Automatic collection may be inactivated in Customize Headers. You may also add custom headers manually. <br/>

    Separate maps are maintained for each of Mail, News, and Feed type messages.

    Within each message type map, message pane layouts for Brief and Basic headers are configurable to contain any desired number of rows and any header order.

    Customize header separator and wrap lines on header overflow.

    In the headers pane, overflowing/wrapped fields may be toggled. Click on individual header label/name (toggleable fields will show a pointer cursor) to toggle the field. Wrapped headers that overflow your wrap lines will show a small scrollbar.

    Customize a header's Display name, Format, Wrap (auto on overflow), and Ellipsis on overflow.

    Headers View:

    • Message pane headers toggle to None, Brief, Basic, Full.

    • If the header toggle button is toggled to 'None' the pane will autohide when the mouse leaves the pane. Hovering on the pagecurl indicator will autoshow the pane.

    • Header pane height/state is persisted. Drag the border to set the height.

    • Header toolbar buttons feature an optional flat style and autopopup menus.

  • Header Editor

    Edit any header in a message or add a new header.


    • To invoke the Editor, toggle ctrl-h or select Header Editor in the headers context menu. Click the info icon for more and hover the buttons for tooltips.
    • Double click a header value in the row to invoke its editor; double click to return to the editor after a change has been set for saving.

    NOTE: Editing is not available for messages in an IMAP readonly or news (NNTP) or trash folder.

  • TotalMessage Bar

    The message list includes a new Bar in the Subject column to provide a more comfortable sorting and column configuration experience. While there has always been an ability to do (certain) secondary sorts in the backend, there was no visual feedback or an easy one click way to achieve this. The Bar also adds easy access to sort/group/column selection/threading options. The thread and columnpicker column space is not necessary.

    A sort order button Up Arrow means Ascending, a Down Arrow means descending. For Read and Attachment and Starred columns, Ascending starts from is read or is starred or has attachment and goes to not read or not starred or no attachment (unlike Junk Status).

    The former Order Received column is renamed to Index. Order Received is not strictly correct, as early dated messages have a higher Order Received if they are moved/copied to other folders.

    The TotalMessage Bar and List customization can be turned off by setting the pref headerListEnabled to false and restarting.

    NOTE: Some secondary sorts are very slow for large lists. Custom columns (indicated in italic) can only be a primary sort. The backend defaults to certain behavior for sort values; this is reflected in the Bar and is not overridable.

  • Message List (threadpane) Subject column customization

    The string appearing in the Subject column can be configured as desired, based on a headers and values map. A treeview treecell supports only a string and there is no formatting or alignment.

    By default, Subject is premapped and the column text starts with Subject: in threadpane. See below how to remove this demo.


    • Open the Customize Headers panel.

    • Select the List item in the Select Headers Type to Map menulist for the desired message type. Create the map (there is only one row for this map type).

    NOTE: the default labels may be removed from display by saving a blank Display column value. Also, since any unicode character may be entered, a label can be 📎 or 🌟 or any other value found in the List of Unicode characters page. A font that handles unicode symbols is required.

  • Forward header customization


    • Open the Customize Headers panel.

    • Select the Forward item in the Select Headers Type to Map menulist for the desired message type. Create the map.

    • Make sure that View->Headers is set to Normal for the map to take effect. Otherwise, all headers will be included in the forwarded composition.

  • Compose header customization


    • Open the Customize Headers panel.

    • Select the Compose item in the Select Headers Type to Map menulist to edit the Compose map. Add the desired header to the map and it will appear in the Compose addressing widget menulist. The Compose map applies to all message types.

    • Double click the Display row to enter a custom name (if desired, or use the default) to appear in the addressing menulist and in the sent message. The Compose header Display name must follow RFC specification for mail headers (ascii only). Duplicates are not allowed.

    • Speed Dial

      Frequently used values for a header may be saved. Double click the Value column row to enter the editor and input values. Saved values are autofilled when the header is selected from the Compose addressing menulist. Multiple values for the same header can be stored by saving a comma separated list. Use a \ to delimit commas. An empty comma creates an empty value.

      For example, add accept-language (from collected headers or create it) to the map. Entering ,ja,pl,ru\,fr\,de will result in the following addressing widget menulist:


      Accept-Language: ja

      Accept-Language: pl

      Accept-Language: ru,fr,de

      Or a keywords header may have Project One\,Finance,Project Two\,Finance,Personal which results in menuitems:

      Keywords: Project One,Finance

      Keywords: Project Two,Finance

      Keywords: Personal

      For addressing headers (email addresses or newsgroups), multiple values may also be entered. On menuitem selection, the comma separated list will be expanded one per row. This is a Thunderbird limitation. A custom addressing header value is not checked for existence in an addressbook, so must be entered currently as a valid email or newsgroup. Autocomplete is disabled for non-addressing headers and enabled for autofilled rows. A cc header with\,\,stan, results in menuitems:



      Selecting the first menuitem expands to the following rows in the Compose window, where stan is an invalid email:



      Cc: stan

      Cc: (focus row)

      Depending on placement, stan may not be expanded if an @ email follows. Also, if you wish to include a list, enter it as MyList <list>.

    NOTE: Many headers such as Subject, Date, Received, User-Agent, Message-Id, etc. are not usefully customizable. Such headers are overridden by Thunderbird or the SMTP server or MTAs along the way.

  • Print header customization


    • Open the Customize Headers panel.

    • Select the Print item in the Select Headers Type to Map menulist for the desired message type. Create the map.

    • Make sure that View->Headers is set to Normal for the map to take effect. Otherwise, all headers will be included in the printed composition.

    NOTE: custom headers are added only if the message is first Print Previewed. A direct Print (ctrl-P) will use the built in defaults.

  • Attachments enhancements

    Attachments that have been detached show a local file link to the detach location. A tooltip message appears if the location is no longer valid.

    Feed enclosure remote location urls are displayed in a link and are properly handled for open/save functions.

  • Column values are mappable, including message text

    The category Other Values in the Customize Headers panel contains a list of columns and extension custom columns which may be mapped for display along with headers.

    The x-message special header is the text content of the message. An existing core api is used to get this value. The api has a number of problems but will work for most cases. IMAP is supported, but news(NNTP) message content is not. Up to 255 characters (may be fewer due to odd space compression logic) are returned.

  • Fine tune remote content in messages

    Allow one time per message remote content display. In the Blocked Remote Content notification, select Show remote content temporarily in the Preferences button popup.

  • Easy Threading and Re-threading of messages

    Select a new thread parent or remove threading, for any single message. Multiselection of messsages and carrying along a rethreaded message's child messages is not supported. Starting a rethread operation invokes Edit Mode.


    • Threaded view must be enabled first (toggle thread column or select Threaded menuitem).
    • Mouse: Drag and Drop the selected message to the new parent. The drag target will be highlighted in 'Edit Red' and a (valid) drop parent will be outlined. Moving the drag outside of the threadpane cancels Edit Mode.
    • Keyboard: Press ctrl-v to set the message as a drag target and use the up/down arrow keys to select the new parent drop target. Press ctrl-v to 'drop' the selected message on the new parent. Drop attempts on the selected message itself or on the existing parent won't do anything.
    • To remove threading, select a message and press ctrl-v then ctrl-x. The unthreaded message will be selected in its new sort order position.
    • In Edit Mode, a backup of the selected message is created in the Trash folder, unless the backup button in the Edit toolbar is unchecked.

    NOTE: certain rethreadings, such as making message A the child of message B which used to be the child of message A, may require rebuilding the folder index, via Properties Repair Folder. It is best to unthread message A first, then thread it to B, rather than threading A to B in one step. Unthreading will also clean up long reference chains, if a message has been moved many times.

    NOTE: Editing (thus rethreading) is not available for messages in an IMAP readonly or news (NNTP) or trash folder.

  • No Unwanted Message Selection

    No message will be selected after a right click delete/move/archive, if there is no message currently selected.

    No message will be selected after a message removal based on Junk icon junk/unjunk action, if there is no message currently selected.

    Using ctrl-click to unselect a message will now forget the message. This means returning to the folder of an unselected message will not select it, even if pref mailnews.remember_selected_message is true).

  • Basic Browsing in content tabs

    Link context menu items Open Link in New Tab and Open Link in New Window have been added. This enables viewing web pages in Thunderbird tabs/windows more comfortably. Back and Forward navigation is supported.

  • Miscellaneous

    Select/copy - headers are an html page!

    Extensive keyboard support for all functionality:

    Use shift-h to toggle the header (jmozmoz request).

    Page curl indicators and some buttons have tab stops, <enter> initiates an action.

    Customize headers tree columns may have action initiated by 'd', 'f', 'w', 'e' keys. This is even localizable, but completely undiscoverable..

    Linkified subject or website (a Content-Base header is found) may be clicked to load the web page in message pane. The link's contextmenu has an option to remember the click choice (the default is to open in a browser).

Comments and Questions: TotalMessage forum.