About this Add-on
If you want to send a message to multiple recipients, there are a few common problems:
1) When you add the recipients in the To field, the recipients will see each other. (You can work around this problem by adding the recipients in the Bcc field.)
2) Most email providers limit the number of recipients in the To / Cc / Bcc field. (You can work around this problem by creating multiple messages.)
3) You cannot personalize the message. (You cannot work around this problem.)
You can work around some of these problems, but especially the last problem cannot be solved without creating individual messages. Of course there are third party services, that help you to send newsletters; but you have to trust them.
Mail Merge solves these problems by creating individual messages for each recipient from a draft message - locally on your computer without the need to trust third party services!
Step by Step: (Address Book)
Screenshots: Draft Message | Mail Merge Dialog
- Create a New Message ("File -> New -> Message")
- Add the Recipients to To
- Add other Recipients to Cc (optional) (variables are supported)
- Add other Recipients to Bcc (optional) (variables are supported)
- Add the Subject (variables are supported)
- Add the Body (variables are supported)
- Add the Attachments (optional)
- Click "File -> Mail Merge"
- Select "Address Book" and check "Deliver Mode"
- Add (individual) Attachments (optional) (variables are supported)
- Check "Start", "Stop" and "Pause" (optional)
- Click "OK"
Step by Step: (CSV)
Screenshots: Draft Message | Draft Message | Mail Merge Dialog
- Create a New Message ("File -> New -> Message")
- Add the Variable(s) to To, e.g.: {{Email}} or {{FirstName}} {{LastName}} <{{Email}}>
- Add other Recipients to Cc (optional) (variables are supported)
- Add other Recipients to Bcc (optional) (variables are supported)
- Add the Subject (variables are supported)
- Add the Body (variables are supported)
- Add the Attachments (optional)
- Click "File -> Mail Merge"
- Select "CSV" and check "Deliver Mode"
- Add (individual) Attachments (optional) (variables are supported)
- Select "Filename" and check "Character Set", "Field Delimiter" and "Text Delimiter"
- Check "Start", "Stop" and "Pause" (optional)
- Click "OK"
Tutorials: (External)
Chris Bryson has published two video tutorials How to : Mail Merge with Thunderbird and Mail Merge Attachments with Thunderbird Email.
Variable: {{name}}
The variable will be replaced by the value of the field name, e.g.:
{{FirstName}}: the variable will be replaced by the value of the field FirstName
{{LastName}}: the variable will be replaced by the value of the field LastName
{{Email}}: the variable will be replaced by the value of the field Email
Variable: {{name|if|then}}
If the value of the field name equals if, then the variable will be replaced by then.
Variable: {{name|if|then|else}}
If the value of the field name equals if, then the variable will be replaced by then, else by else.
Variable: {{name|*|if|then|else}} (contains) (regexp)
If the value of the field name contains if, then the variable will be replaced by then, else by else.
Variable: {{name|^|if|then|else}} (begins with) (regexp)
If the value of the field name begins with if, then the variable will be replaced by then, else by else.
Variable: {{name|$|if|then|else}} (ends with) (regexp)
If the value of the field name ends with if, then the variable will be replaced by then, else by else.
Variable: {{name|==|if|then|else}} (equal to) (number)
If the value of the field name is equal to if, then the variable will be replaced by then, else by else.
Variable: {{name|>|if|then|else}} (greater than) (number)
If the value of the field name is greater than if, then the variable will be replaced by then, else by else.
Variable: {{name|>=|if|then|else}} (greater than or equal to) (number)
If the value of the field name is greater than or equal to if, then the variable will be replaced by then, else by else.
Variable: {{name|<|if|then|else}} (less than) (number)
If the value of the field name is less than if, then the variable will be replaced by then, else by else.
Variable: {{name|<=|if|then|else}} (less than or equal to) (number)
If the value of the field name is less than or equal to if, then the variable will be replaced by then, else by else.
Address Book:
Addressbook Properties Supported by Thunderbird
{{FirstName}}
{{LastName}}
{{DisplayName}}
{{NickName}}
{{PrimaryEmail}}
{{SecondEmail}}
{{HomePhone}}
{{WorkPhone}}
{{FaxNumber}}
{{PagerNumber}}
{{CellularNumber}}
{{HomeAddress}}
{{HomeAddress2}}
{{HomeCity}}
{{HomeState}}
{{HomeZipCode}}
{{HomeCountry}}
{{BirthDay}}
{{BirthMonth}}
{{BirthYear}}
{{JobTitle}}
{{Department}}
{{Company}}
{{WorkAddress}}
{{WorkAddress2}}
{{WorkCity}}
{{WorkState}}
{{WorkZipCode}}
{{WorkCountry}}
{{WebPage1}}
{{WebPage2}}
{{Custom1}}
{{Custom2}}
{{Custom3}}
{{Custom4}}
{{Notes}}
{{_GoogleTalk}}
{{_AimScreenName}}
{{_Yahoo}}
{{_Skype}}
{{_QQ}}
{{_MSN}}
{{_ICQ}}
{{_JabberId}}
{{_IRC}}
Address Book:
MoreFunctionsForAddressBook
{{MFFABcustom1}}
{{MFFABcustom2}}
{{MFFABcustom3}}
{{MFFABcustom4}}
{{MFFABcustom5}}
{{MFFABcustom6}}
{{MFFABcustom7}}
{{MFFABcustom8}}
{{MFFABcustom9}}
{{MFFABcustom10}}
{{MFFABemail1}}
{{MFFABemail2}}
{{MFFABemail3}}
{{MFFABemail4}}
{{MFFABemail5}}
{{AnniversaryDay}}
{{AnniversaryMonth}}
{{AnniversaryYear}}
Address Book:
gContactSync
{{ThirdEmail}}
{{FourthEmail}}
{{HomeFaxNumber}}
{{OtherNumber}}
{{PrimaryEmailType}}
{{SecondEmailType}}
{{ThirdEmailType}}
{{FourthEmailType}}
{{WorkPhoneType}}
{{HomePhoneType}}
{{FaxNumberType}}
{{CellularNumberType}}
{{PagerNumberType}}
{{HomeFaxNumberType}}
{{OtherNumberType}}
{{WebPage1Type}}
{{WebPage2Type}}
{{Relation0}}
{{Relation1}}
{{Relation2}}
{{Relation3}}
{{Relation4}}
{{Relation5}}
{{Relation0Type}}
{{Relation1Type}}
{{Relation2Type}}
{{Relation3Type}}
{{Relation4Type}}
{{Relation5Type}}
Cardbook:
Cardbook
{{dirPrefId}}
{{cardurl}}
{{etag}}
{{updated}}
{{deleted}}
{{created}}
{{lastname}}
{{firstname}}
{{othername}}
{{prefixname}}
{{suffixname}}
{{fn}}
{{nickname}}
{{bday}}
{{gender}}
{{adr}}
{{tel}}
{{email}}
{{mailer}}
{{tz}}
{{geo}}
{{title}}
{{role}}
{{agent}}
{{org}}
{{categories}}
{{note}}
{{prodid}}
{{sortstring}}
{{uid}}
{{rev}}
{{url}}
{{version}}
{{class1}}
{{key}}
{{impp}}
{{others}}
{{photo}}
{{value}}
{{localURI}}
{{URI}}
{{extension}}
{{logo}}
{{value}}
{{localURI}}
{{URI}}
{{extension}}
{{sound}}
{{value}}
{{localURI}}
{{URI}}
{{extension}}
{{kind}}
{{member}}
{{dispn}}
{{dispadr}}
{{disphomeadr}}
{{dispworkadr}}
{{disptel}}
{{disphometel}}
{{dispworktel}}
{{dispcelltel}}
{{dispemail}}
{{disphomeemail}}
{{dispworkemail}}
{{dispimpp}}
{{dispurl}}
{{pgname}}
{{pg}}
Cardbook: (Address)
Cardbook
{{adr}}
{{adrpostoffice}}
{{adrextended}}
{{adrstreet}}
{{adrlocality}}
{{adrregion}}
{{adrpostalcode}}
{{adrcountry}}
Cardbook: (Types)
Cardbook
The configured "Types" in the "Cardbook Preferences" can be used by its "Code" as a first parameter for the properties address, email, impp, phone and url. For example:
{{adr#home}}
{{adr#work}}
{{email#home}}
{{email#work}}
{{impp#home}}
{{impp#work}}
{{tel#cell}}
{{tel#fax}}
{{tel#home}}
{{tel#work}}
{{url#home}}
{{url#work}}
In case you have multiple entries, you can use a number as a second parameter for the properties address, email, impp, phone and url. For example:
{{url#home#0}}
{{url#home#1}}
{{url#home#2}}
Cardbook: (Custom Fields)
Cardbook
The configured "Custom Fields" in the "Cardbook Preferences" can be used by its "Field Name". For example:
{{others#X-CUSTOM1}}
{{others#X-CUSTOM2}}
{{others#X-CUSTOM3}}
{{others#X-CUSTOM4}}
CSV:
Comma-separated values
records are separated by line breaks (\r, \n, \r\n)
fields are separated by field delimiters (comma, semicolon, colon, tab)
fields may be enclosed within text delimiters (double quote, single quote, none)
fields with embedded line breaks must be enclosed within text delimiters
fields with embedded field delimiters must be enclosed within text delimiters
fields with embedded text delimiters must be enclosed within text delimiters
embedded text delimiters must be doubled
first record must contain columnnames
CSV: (Example)
FirstName,LastName,Gender,Email,Attachment
John,Doe,m,john.doe@example.com,C:\MyFile.pdf
Attachments:
You can add Attachments in the Mail Merge Dialog, e.g.:
Attachments: {{Attachment}}
Attachments: C:\{{Attachment}}
Attachments: C:\PDF\{{Attachment}}
Attachments: C:\PDF\{{Attachment}},C:\PDF\{{FirstName}}-{{LastName}}.pdf
Batch:
Start: Number of First Message (optional)
Stop: Number of Last Message (optional)
Pause: Pause between Messages in Seconds (optional) (variables are supported)
Character Set:
Character Sets Supported by Thunderbird
Windows-1252 (Windows)
UTF-8 (Linux & Mac)
Connections:
Mail Merge supports multiple concurrent connections:
extensions.mailmerge.connections
Custom Headers: (Thunderbird 38+)
Mail Merge supports Custom Headers:
mail.compose.other.header
Debug:
View Log Messages in the Error Console ("Tools -> Developer Tools -> Error Console")
Line Breaks:
Thunderbird uses an HTML editor internally. You can create line breaks with <br>.
Links and Images:
Thunderbird uses an HTML editor internally. You can create individual links and images with "Insert -> HTML". For example:
Link: <a href="{{link}}">
Image: <img src="{{image}}">
Nested Variables:
Variables can be nested. For example: To create individual emails only for your premium customers, you can add something like this in the To field:
{{Premium|x|{{Email}}}}
Pause:
The "Pause" field supports fixed and random pauses as well as variables, e.g.:
Fixed Pause: 10 (pause 10 seconds)
Random Pause: 10-60 (pause between 10 and 60 seconds)
Variables: {{Pause}}
Send Later:
Mail Merge supports Send Later:
User Guide
Recipients Reminder:
If your draft message contains multiple recipients and you click "File -> Send Now" or "File -> Send Later", the Recipients Reminder will offer you to use Mail Merge instead.
The Recipients Reminder can be activated and deactivated in the Mail Merge Preferences in the Add-ons Manager. The threshold can be configured:
extensions.mailmerge.recipients
Variables Reminder:
If your draft message contains variables and you click "File -> Send Now" or "File -> Send Later", the Variables Reminder will offer you to use Mail Merge instead.
The Variables Reminder can be activated and deactivated in the Mail Merge Preferences in the Add-ons Manager.
Error Message: (Check the Filename)
Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIFile.initWithPath]
Error Message: (Check the Filename)
Component returned failure code: 0x80520012 (NS_ERROR_FILE_NOT_FOUND) [nsIFileInputStream.init]
Error Message: (Check the Character Set)
Component returned failure code: 0x80500001 [nsIConverterInputStream.init]
Error Message: (Check the Character Set)
Component returned failure code: 0x8050000e [nsIConverterInputStream.readString]
Error Message: (Check the Character Set)
Component returned failure code: 0x8050000e (NS_ERROR_ILLEGAL_INPUT) [nsIConverterInputStream.readString]
Error Message: (Check the Body)
Component returned failure code: 0x80004002 (NS_NOINTERFACE) [nsIHTMLEditor.rebuildDocumentFromSource]
Bug:
Mail Merge does not support LDAP
Donation:
Please support the development of Mail Merge with a donation (PayPal): 5 Euro | 10 Euro | 15 Euro | 25 Euro