This is an archived page. It's not actively maintained.


Found 118 pages:

# Page Tags and summary
1 Thunderbird thunderbird
Thunderbird is a mail/messaging application managed and developed by the Thunderbird community. These pages document Thunderbird and the MailNews backend which is also used in other projects such as Seamonkey and Postbox.
2 Account Provisioner
The Account Provisioner is the dialog that first comes up when starting Thunderbird. The Account Provisioner gives the user the chance to search for and order a vanity email account from a list of partner providers. If the user already has an email account, the user can switch to the original account setup wizard.
3 Account examples Extensions, thunderbird
This article provides examples on accessing and manipulating Thunderbird accounts. Account interfaces provides an overview of the related interfaces. See An overview of Thunderbird components for a general description of the Thunderbird user interface and related programmatic interfaces.
4 Account interfaces Code snippets, Extension Development, thunderbird
This page contains a list of the interfaces that you'll will most likely use when writing extensions that work with email or other accounts. See Account examples for examples and code snippets.
5 Activity Manager Thunderbird 3, thunderbird
The Activity Manager is a simple component that understands how to display a combination of user activity and history. The Activity Manager works in conjunction with the Interactive Status Bar to give the user notifications concerning what Thunderbird is doing and how Thunderbird has handled user requests.
6 Activity Manager interfaces thunderbird
This page describes the programmatic interfaces behind the Activity Manager component. The functionality of the component is described on the Activity Manager page, and the Activity Manager examples page has code snippets. See nsIActivityManager.idl and nsIActivity.idl files for source documentation.
7 Address Book Interfaces MailNews, Mozilla, SeaMonkey, thunderbird
This page contains a list of the interfaces that you'll will most likely hit when writing patches for the Address Book or writing extensions. The complete list of interfaces for the address book can be found here. Address Book examples show how to perform various tasks and provide code snippets.
8 Address Book examples MailNews, SeaMonkey, thunderbird
This article provides examples on accessing and manipulating Thunderbird address books. Address book interfaces provides an overview of the related interfaces. See An overview of Thunderbird components for a general description of the Thunderbird user interface and related programmatic interfaces.
9 Address book sync client design
by Richard H. Pizzarro <>
10 Autoconfiguration in Thunderbird Administration, enterprise
Author: Ben Bucksch
Please do not change this document without consulting the author
11 Autoconfig file format
No summary!
12 Autoconfig file format definition
Please see
13 Autoconfig: How to create a configuration file Autoconfiguration, thunderbird
Authoritative definition
14 Autoconfiguration in Thunderbird
Moved to Autoconfiguration
15 Buddy icons in mail
Seth Spitzer

Mozilla is now able to show icons in the message header area and the addressbook card pane.

For the message pane, the icon we will show is on disk at:

<profile home>/NIM/<value of pref aim.session.screenname>/picture/<screenname for sender email address>.gif

When trying to determine the screenname for the sender, we search the addressbook that we are using for collection.  (See this document for info about that.)

For the addressbook card pane, the icon will show is on disk at:

<profile home>/NIM/<value of pref aim.session.screenname>/picture/<screenname for card>.gif

If aim.session.screenname is not set, the icon will not appear. 
If there is no card matching the email, the icon will not appear. 
If there is a card, but no screenname, the icon will not appear. 
And finally, if there is no icon, the icon will not appear.

The reason this file name scheme was chosen was is this is how Netscape 7.0 IM stores buddy icons on disk. 
So if you use NIM, and you use buddy icons, this will just work for free.

16 Cached compose window FAQ
Seth Spitzer (
What is the "cached" compose window?
Instead of destroying the mail compose window on send (or close) just to create a new one the next time, Mozilla Mail will "cache" the compose window on send (or close), and use that instead.  The downsides are that we have had some bugs, it complicates and bloats the code, and it requires more testing.  The upside is that is has been a major performance win

Why did you do this?
Back 0.9.7, we hit a wall with the compose window.  Any new window performance problems that mozilla has are especially painful in mail compose, as we need to create a new compose window on every new mail message or reply.

But we noticed that the common usage pattern is to compose, send, compose, send, compose send.  We decided it would be worth the trouble to cache the compose window.  If  the user has this usage pattern, we wouldn't have to create a new window.  We could just hide it on send, and then show it on the next compose.  If the user opens (but never sends or closes compose windows), this trick will not apply to them.  But this is not a common usage model.

How do I test it?
On window and mac, the cached compose window is on by default.  To test it
17 Content Tabs thunderbird
Content Tabs enable Thunderbird to display remote content in a tab, which users can browse in (mostly) the same way as with a browser. For example, invoking Thunderbird's Help | What's New menu option opens a tab that displays web content. The Thunderbird team can update this content via the website at any time.
18 Cookies In Thunderbird Cookies, Guide, thunderbird
In versions of Thunderbird prior to 3 the cookie policy was very restrictive (to RSS only). Thunderbird 3 uses the Gecko cookie policy with some changes.
19 Creating a gloda message query Thunderbird 3, thunderbird
This page describes how to programmatically create a message query using gloda, Thunderbird's global database. See the gloda page for background on the component. See Gloda examples for more code samples.
20 DB Views (message lists) MailNews, thunderbird
The thread pane (aka message list) is driven by classes that implement nsIMsgDBView and inherit from nsMsgDBView. These are the main view classes:
21 Deploying Thunderbird in the Enterprise Corporate, Corporation, Thunderbird 3, enterprise, thunderbird
These documents and references are provided to help those involved in deploying Thunderbird in large institutions.
22 Thunderbird Preferences Relevant to Enterprises enterprise, thunderbird
Preferences related to use of Thunderbird in enterprises
23 Upgrading Thunderbird in the Enterprise Thunderbird 3, enterprise, thunderbird
This is an Upgrade Guide intended to help large organizations (also referred to as "enterprises") that use Thunderbird to upgrade to Thunderbird version 3. This initial draft is a summary of the draft author's knowledge regarding auto-sync / offline settings (bug 562589) and Thunderbird 3 migration issues relevant to administrators (bug 562589#c7) (as of 2010/05/06).
24 Events
There are a lot of events that can be fired in Mail code. Some of these are standard events, such as those created by the DOM. Others are internal to Gecko or other parts of Mozilla application code. This reference will help you track those events down and learn how to use them.
25 Filelink Providers thunderbird
Filelink is a Thunderbird feature that makes it easy for users to upload large attachments to web-based storage services such as Hightail.
26 nsIMsgCloudFileProvider
nsIMsgCloudFileProvider is the interface that must be implemented by new Filelink providers.
27 Folder pane interfaces
This page contains a list of the interfaces that you'll will most likely use when writing extensions that affect the Folder Pane. See Working with the folder pane for examples and code snippets.
28 Gloda Thunderbird 3, thunderbird
Thunderbird includes a new message indexing and search system (gloda) that improves search performance, provides sophisticated full-text  search capabilities and categorized search results. "Gloda" is short for the Thunderbird "global database".
29 Gloda debugging
The gloda code has Log4Moz logging statements spread throughout.  The following preferences are supported to control how this gets logged:
30 Gloda examples Thunderbird 3, thunderbird
This page provides some examples for using gloda. See Creating a gloda message query for more examples.
31 Gloda indexing
This page provides a big-picture summary of what the indexer does; please see the source for nitty-gritty details or if this page seems to be wrong.  GlodaIndexer provides the core indexing logic. GlodaMsgIndexer has the message-specific stuff, although the actual attribute-providers are found in GlodaExplicitAttr and GlodaFundAttrGlodaABIndexer has the limited address book support.
32 Index Index
Found 72 pages:
33 LDAP Support Administration, enterprise, thunderbird
This document is intended to "fill in the gaps" about how Enterprise customers can leverage and customize LDAP support in Mozilla Thunderbird. It is not intended as an introduction to LDAP and Mozilla products. It assumes you are already familiar with configuring preferences for deployed builds in addition to setting up Thunderbird to use an LDAP directory. It should be noted that all of this information applies to both Thunderbird and the SeaMonkey application suite.
34 Mail and RDF
Mozilla Mail exposes many of it's data structures to RDF through a few datasources. This allows exposure of mailnews-specific data to user interface using RDF Templates.
35 Mail client architecture overview
Sections in grey refer to modules outside of mail/news
36 Mail composition back end
by Richard H. Pizzarro <> Contents
37 Mail event system
Mozilla mail requires an event system to notify different subsystems that data has changed. This document describes the system that events are passed amongst the mail objects.
38 MailNews Filters MailNews, thunderbird
Mailnews filters consist of a set of search terms, and a set of filter actions. Filter execution is done by evaluating the search terms using the core mailnews/base/search code, and then applying the filter hits when the search terms match. For new incoming messages, the protocol specific object that handles new messages calls nsIMsgFilterList::ApplyFiltersToHdr and passes itself in as nsIMsgFilterHitNotify interface to handle filter hits. E.g., IMAP, POP3.
39 MailNews Protocols MailNews, thunderbird
These are all implemented in C++, except for RSS. RSS is implemented in JS and doesn't follow the same pattern as the C++ protocols.
40 MailNews fakeserver MailNews, SeaMonkey, thunderbird
Fakeserver is a testing server that implements a generic text-based protocol common to all major mailnews protocols (POP, IMAP, SMTP, and NNTP) designed for use in automated tests. It can also be used in manual QA tests.
41 MailNews xpcshell-tests Automated testing, Developing Mozilla, MailNews, SeaMonkey, thunderbird
MailNews xpcshell-tests are written and run in the same manner as the core xpcshell-tests. This page describes additional resources and facilities that MailNews has developed to support the xpcshell-tests; see the core xpcshell-tests page for more information on how to develop these.
42 Mailbox MailNews
The mailbox protocol is used to read messages from a local folder berkeley mailbox. It consists of nsMailboxService, nsMailboxUrl, and nsMailboxProtocol. This may seem like a lot of infrastructure just to read messages from a flat file, but it allows us to do it asynchronously, and to have reading local messages fit into the same kind of mechanisms that reading nntp and imap messages do - running urls, getting onStart/StopRunningUrl notifications when the url starts/stops, etc.
43 Mailnews and Mail code review requirements
This document describes the process for reviewing patches to the mozilla/mailnews  and mozilla/mail directories. Thunderbird and SeaMonkey are the primary users of the code in mozilla/mailnews. Thunderbird's front-end code is stored in mozilla/mail. (A fair amount of this code is forked from code in the mailnews/ directory).
44 Main Windows thunderbird
The base chrome directory of Thunderbird can sometimes appear confusing when you're just beginning to look at it. As such, I've always thought it would be nice to have a list of what xul, js, or other files are that are here, what they do, and where they overlay at different points within the client. Things appear confusing for several reasons:
45 Message Interfaces Interfaces, Interfaces:Scriptable, NeedsContent, XPCOM API Reference, thunderbird
nsIMsgHdr - this interface describes headers for all mail messages. It can be used to retrieve address, subject and related header information for a mail message.
46 Message examples thunderbird
No summary!
47 Message list examples thunderbird
No summary!
48 Message list interfaces thunderbird
No summary!
49 Releases1
There are various nightly builds available for testing purposes.
50 Spam filtering
Seth Spitzer

the mozilla implement is based on Paul Graham's A Plan for Spam.

training data is global across all mail accounts within a profile

training data is stored in a binary format, in a file named "training.dat".

initially, the training.dat file is empty (there was discussion of shipping with a default file)

on spam detection, the user can choose to move spam to a special "Junk" folder

the user can configure junk mail can be automatically purged from the "Junk" folder

to analyze a message for spam, we need the entire message, not just the headers.

spam detection happens after filters are run

white listing happens after filters, but before spam detection

the purge code is implemented as a search of the "Junk" folder, looking for "old" message that have the proper junk status.

when does purging happens?

elaborate on the mime changes that were made for spam

currently, spam filtering is does not work for news, but it would be possible to add support for this.  (there is a bug on it.)
51 The libmime module
by Richard H. Pizzarro <>
52 Thunderbird API documentation
These pages have been moved from, and may or may not be relevant.
53 Thunderbird Automated Testing Automated testing, Developing Mozilla, thunderbird
Automated testing is increasingly becoming a significant and important part of Thunderbird's development. It allows us to quickly pick up regressions in patches and helps the developer to think about different cases.
54 Thunderbird Automated Testing FAQ
No summary!
55 Thunderbird Binaries Branch, Trunk, comm-central, thunderbird
Described below are three types of generally available Thunderbird packages - Releases, Early Preview Releases, and Nightly Builds (including trunk development builds) - and their downloaded locations.  Additionally, ad-hoc packages called try builds are made available on an as-needed basis to allow for testing of certain patches, and are typically announced in related bug reports.
56 Thunderbird Configuration Files Config Editor, Configuration Files
Many of the tips and tricks mentioned on this site can be applied by using the built-in Config Editor. To access the Config Editor, go to Tools > Options or do Thunderbird > Preferences. If you are on Mac OS X, and on Linux do Edit > Preferences on, select the Advanced options panel, click on the General tab, and click on Config Editor. This will display a list of used preferences, as well as a search bar at the top.
57 Thunderbird Enterprise Tips enterprise, thunderbird
The tips on this page have been drawn from the tb-enterprise mailing list.
58 Thunderbird MozMill Testing Automated testing, Developing Mozilla, MozMill, thunderbird
MozMill is the framework that we're using to run interactive tests.  Mozmill tests effectively run the entire application through unit tests.
59 MozMill Development Install Automated testing, MozMill, thunderbird
No summary!
60 Running Thunderbird MozMill tests from packaged tests
If you want to run the MozMill tests that the Thunderbird builders run in automated fashion against a pre-compiled Thunderbird, it is possible to do this.
61 Thunderbird developer release notes Landing, Mozilla, Release, thunderbird
This page provides links to the "Thunderbird X for developers" articles for each Thunderbird release. These notes let you see what features were added and bugs eliminated in each version of Thunderbird.
62 Thunderbird 24 for developers
CreateRFC822Message: removed argument aBodyLength
63 Thunderbird 3 for developers thunderbird
This page lists the changes in Thunderbird 3 that are relevant for developers. See Thunderbird 3 for users to see a list of changes relevant to end users.
64 Thunderbird 3.1 for developers thunderbird
This page lists the changes in Thunderbird 3.1 that are relevant for developers. For the time being, please also list user-visible changes. (If there are many of these, we will create a separate page for them.)
65 Thunderbird 5 for developers Thunderbird 5
This page lists the changes in Thunderbird 5 that are relevant for developers. For changes that are relevant to end users, see
66 Thunderbird 6 for developers 6, Mozilla, Release, thunderbird
This page lists the changes in Thunderbird 6 that are relevant for developers. For changes that are relevant to end users, see
67 Thunderbird 60 for developers 60, Mozilla, Release, thunderbird
This article provides information about the changes in Thunderbird 60 that will affect developers.
68 Thunderbird 63 for developers 63, Extensions, Mozilla, Release, thunderbird
This article provides information about the changes in Thunderbird 63 that will affect developers.
69 Thunderbird 7 for developers
This page lists the changes in Thunderbird 7 that are relevant for developers. For changes that are relevant to end users, see
70 Thunderbird extensions Add-ons, Extensions, thunderbird
71 Adding items to the Folder Pane
This tutorial examines how to add items to an existing Folder Pane view. The result is a javascript file that will add a "Numbers" container to the end of Thunderbird's "All Folders" mode. That container will have 3 child-items, the numbers 1, 2, and 3. Clicking on those items will display the number in the main viewing pane of Thunderbird.
72 Adding views to the Folder Pane Add-ons, Draft, Extensions, Guide, NeedsContent, thunderbird
This is a stub page for a tutorial for Thunderbird 3.
73 An overview of Thunderbird components thunderbird
The Thunderbird mail application is a group of components built on a set of technologies that can seem daunting to new developers. However, in many cases you only need to learn a few concepts to write an extension.
74 Building a Thunderbird extension 1: introduction Add-ons, Extensions, thunderbird
Thunderbird is a community managed open-source email application. It shares many of the technologies used by Mozilla Firefox, including JavaScript, the Gecko layout engine, the XUL XML User Interface Language and the XPCOM Cross-Platform Component Object Model. Similar to Firefox, Thunderbird functionality can be enhanced and customized via extensions.
75 Building a Thunderbird extension 2: extension file layout Extensions, thunderbird
Extensions are packaged and distributed in archive files (also known as Bundles), with the XPI (pronounced “zippy”) file extension. At a minimum, they contain an install.rdf, the chrome.manifest and a chrome/ folder. A content/ folder sometimes contains the actual content files. These files contain the code that makes your extension actually do something. When this tutorial is finished, our extension will look like this:
76 Building a Thunderbird extension 3: install manifest Extensions, thunderbird
The install.rdf file is an XML file that provides general information about the extension.
77 Building a Thunderbird extension 4: chrome manifest Extensions, thunderbird
The file called chrome.manifest tells Thunderbird what packages and overlays are provided by the extension. Open the file called chrome.manifest that you created and add this code:
78 Building a Thunderbird extension 5: XUL Extensions, thunderbird
Thunderbird's user interface is written in XUL and JavaScript. XUL is an XML grammar that provides user interface widgets like buttons, menus, toolbars, trees etc. We add widgets by inserting new XUL DOM elements into the application window and modify them using scripts and attaching event handlers. While XUL provides the elements of the user interface, actions are written in JavaScript.
79 Building a Thunderbird extension 6: Adding JavaScript
In this step we will create a small piece of JavaScript code that inserts the current date into our statusbar widget. The statusbar is usually displayed at the bottom of the Thunderbird window. Depending on the installed theme the result will look something like this:
80 Building a Thunderbird extension 7: Installation Extensions, thunderbird
While you are developing the extension, there are two ways you can make Thunderbird load it so you can test it as you go. You can either put the folder with the extension files directly into Thunderbird's extensions folder, or you can put a file there that tells Thunderbird where your extension is located. (In step 8 you will learn how to package an .xpi file for distribution and installation.)
81 Building a Thunderbird extension 8: packaging Extensions, thunderbird
When you are satisfied with how your extension works, package it for deployment and installation.
82 Building a Thunderbird extension 9: distributing Extensions, thunderbird
The site is a distribution site where you can host your extension for free. Your extension will be hosted on Mozilla's mirror network. Mozilla's site also provides users with easier installation and will automatically make new versions available to users of your existing versions when you upload them. In addition Mozilla Update allows users to comment and provide feedback on your extension. It is highly recommended that you use AMO to distribute your extensions.
83 Creating a Custom Column Add-ons, Extensions, thunderbird
In this example we will be developing a small extension that will be adding a column that will display the "Reply-To:" field of an email (if it exists, it if often not set). If you are unfamiliar with the setup and creation of an extension please read Building a Thunderbird Extension.
84 Demo Addon
This demo add-on has been created by Jonathan Protzenko for his presentation at MozCamp 2011. It shows how to achieve various goals in a working live example, such as working with Gloda.
85 Error reporting tools thunderbird
Currently, Thunderbird tends to eat a lot of exceptions. Some make it to the error console, most don't. There are deep fixes to the platform needed (e.g. bug 493414), but in the meantime, it would be helpful to be able to get useful output on stderr about exceptions, events and pretty-printed objects.
86 FAQ Add-ons, Extensions, thunderbird
The old contents of this FAQ page were duplicated in the Setting up extension development environment article and the Building a Thunderbird extension article. (Duplicate content has been removed from this page.)
87 Finding the code for a feature Add-ons, Extensions, thunderbird
Frequently you are trying to figure out the code that implements a specific feature of the user interface. How do you find that out? As an example, I received the following inquiry, and I decided to follow my usual path and document what I do:
88 Styling the Folder Pane
The folder pane in Thunderbird is predominantly controlled by code in folderPane.js. Since Thunderbird 3, the folder pane is designed in a more modular and extensible fashion. It is now possible to place non-mail entities in the folder pane.
89 Theme Packaging Add-ons, Themes, Toolkit API
This document describes how to package themes for Thunderbird.
90 Thunderbird HowTos Add-ons, Extensions, thunderbird
Please add questions or answers to this page so that other people can benefit from your work. Also, you will see that there are many topics for which there is a question, but no answer. Please help by adding an answer! (Adding another question helps too!)
91 Activity Manager examples
The Activity Manager is a simple component that understands how to display a combination of user activity and history. See the Activity Manager page for a general description of the component. See the Activity Manager interfaces page for an overview of the related interfaces.
92 Common Thunderbird Extension Techniques thunderbird
No summary!
93 Access StringBundle from Overlay thunderbird
No summary!
94 Access Thunderbird Window Areas thunderbird
To access particular parts of the Thunderbird window you can use these helper methods. An alternative to these methods is to directly access the element by it's ID as in the Detect When a Folder Opens example.
95 Access Window missing, thunderbird
The window object represents the Window of the Thunderbird application as well as the currently opened tabs. You can do many things with the window object, such as accessing the height or width of the window/tab or setting its title, registering timer events and much more. The Window API will give you the complete details. Since window is a global variable you can use it directly from your JavaScript file.
96 Access Window Area NeedsUpdate, missing, thunderbird
This page has no content. Enrich MDC by contributing.
97 Add New Tab missing, thunderbird
No summary!
98 Add Option to Context Menu incomplete, thunderbird
Assuming this on chrome.manifest:
99 Add Tab NeedsUpdate, missing, thunderbird
This page has no content. Enrich MDC by contributing.
100 Add Toolbar Button
Example XUL overlay file:
101 Create Custom Column thunderbird
The article "Creating a Custom Column" will get you well on the road to creating your own columns and populating them with custom data. The customDBHeaders Preference article provides information on a preference setting that exposes custom header data for use in a custom column within Thunderbird's main view.
102 Detect Opening Folder thunderbird
Some actions require execution every time you open a folder (for example, registering a custom column handler. To do this you need to capture the select event of the folder [[XUL:tree|tree]] whose id is (conveniently) folderTree like so:
103 Filter Incoming Mail filter, incoming, mails, thunderbird
To filter incoming mail, the first step is to detect new messages inconming. The, you've got Components.interfaces.nsIMsgDBHdr from where you can modify the mail. By example, to modify the mail subject :
104 Get Thunderbird version thunderbird
On Thunderbird version 3.0b3pre and later, you can use the following snippet to get the Thunderbird version. (Version 3.0b3pre was the first build to include STEEL.)
105 Modify Folder Pane Display missing, thunderbird
See for an example.
106 Modify Message List NeedsContent, NeedsUpdate, missing, thunderbird
This page has no content. Enrich MDC by contributing.
107 Use SQLite thunderbird
If you'd like to use an SQLite database in your extension you'll need to look over the Storage docs for an API reference, however this code should get you started. Be careful of multi-thread access to your database.
108 Folders and message lists Guide, thunderbird
The FolderDisplayWidget for the current folder can be accessed via the global variable gFolderDisplay. This object provides many of the functions required for working with folder views. We'll look at some of them below.
109 Thunderbird developer reference docs
No summary!
110 Tips and Tricks from the newsgroups thunderbird
The following discussions on and include useful tips for Thunderbird add-on developers. Please feel free to add links to threads. We will add a categorization system as the link list grows. You can also help by creating how-tos from any of these topics.
111 Working with the Folder Pane Add-ons, Extensions, thunderbird
The "Folder Pane" refers to the main navigation element that appears on the left side of the main Thunderbird window. Here, users traditionally find a hierarchical view of their accounts and folders. Beginning in Thunderbird 2, additional views on those folders ("Recent Folders", "Favorite Folders", and "Unread Folders") were added, accessible via the scroll-arrows at the top of the pane.
112 customDBHeaders Preference
developing a custom column to display a 'Superfluous' column within Thunderbird's main view. The data will come from a custom header labeled X-Superfluous
113 Thunderbird in the Enterprise enterprise, thunderbird
Many large organizations use Thunderbird as their enterprise email client. This page links to documents on the Mozilla Developer Network and elsewhere on the web that are relevant to deploying Thunderbird in the enterprise.
114 Using MAPI with Thunderbird's Windows 7 developer builds Thunderbird debug, thunderbird
MAPI (Messaging Application Programming Interface) is a Windows feature that allows applications to send files via a system's default mail application. The Thunderbird installer sets the installed build as the default mapi/mail client. If you want to set a debug build as the default mail client, you need configure it manually:
115 Using the Multiple Accounts API
By Alec Flett
116 Write Your Own Thunderbird MozMill Test
This page attempts to be a basic guide to writing your own Thunderbird MozMill Test.
117 comm-central Developing Mozilla, Guide, Internationalization, Mercurial, NeedsUpdate
comm-central is a Mercurial repository of the Thunderbird, SeaMonkey, and Lightning extension code; it's located at: This article provides information about this repository and its use.
118 libmime content type handlers
by Richard H. Pizzarro <>