Send mass mails directly from the control panel.

Fire­Mail allows you to eas­ily send mass mails dir­ectly from your Expres­sion­En­gine 2 con­trol pan­el. It can track sent emails, import tem­plates, use tem­plate tags in emails, send to mail­ing lists and batch send.

Firemail 3

The built-in email tool in Expres­sion­En­gine 2 found under Tools > Com­mu­nic­ate is suf­fi­cient for simple email send­ing, but it lacks many import­ant fea­tures. Fire­Mail is a com­plete email tool that replaces the Com­mu­nic­ate tab, but that reuses the best of ExpressionEngine’s built-in email libraries.

Fire­Mail allows you to track opens, clicks and unsub­scribes res­ult­ing from any email you send.


Fire­Mail also adds a WYSI­WYG edit­or when com­pos­ing emails and sup­ports batch sending.


Require­ments #

Fire­Mail requires Expres­sion­En­gine ver­sion 2.6.0 or above.

Install­a­tion #

Down­load and unzip Fire­Mail, then fol­low the simple steps below:

  1. Upload the system/expressionengine/third_party/firemail folder
  2. Upload the themes/third_party/firemail folder
  3. Install the Fire­mail mod­ule (Con­trol Pan­el → Add-Ons → Mod­ules → Install)
  4. Install the Mail­ing List mod­ule (Con­trol Pan­el → Add-Ons → Mod­ules → Install) if you plan on using mail­ing lists
  5. Cre­ate an upload des­tin­a­tion called Firemail (Con­trol Pan­el → Con­tent → Files → File Upload Pref­er­ences)
  6. Open the Fire­mail set­tings (Con­trol Pan­el → Add-Ons → Mod­ules → Fire­mail) and make any desired changes

Updat­ing #

Down­load and unzip the latest ver­sion of Fire­Mail, then fol­low the steps below:

  1. Over­write the system/expressionengine/third_party/firemail folder
  2. Over­write the themes/third_party/firemail folder

Set­tings #

There are a num­ber of mod­ule set­tings which you can change:

From Name
The name from which emails will be sent (can be changed when com­pos­ing an email)

From Email
The email address from which emails will be sent (we recom­mend cre­at­ing a new email address espe­cially for send­ing mass emails so that you receive bounce backs all in one place)

Batch Size
The num­ber of emails that will be sent in each batch (emails are always sent in batches)

Max Emails per Hour
Max num­ber of emails that can be sent per hour as allowed by your web­host (leave blank for unlimited)

Tem­plate Group
The tem­plate group whose tem­plates can be impor­ted into an email

Rich Text Edit­or Enabled by Default
Wheth­er the Rich Text Edit­or on the com­pose page should be enabled by default

Query String
Wheth­er to enable a query string that can be entered to alter the out­put of an impor­ted template

Accep­ted Admin Email
Wheth­er to send only to mem­bers who have chosen to accept email

Advanced Con­tent Filter
Wheth­er to fil­ter incom­ing HTML con­tent by trans­form­ing and delet­ing dis­al­lowed ele­ments, attrib­utes, classes and styles (see the CKEd­it­or Advanced Con­tent Fil­ter docs)

Cus­tom Toolbar
You can cus­tom­ise the tool­bar by manu­ally enter­ing code in the fol­low­ing format (see the CKEd­it­or tool­bar docs for all tool­bar icons)

[ "Bold", "Italic", "Underline", "Strike", "Subscript", "Superscript" ],
[ "Link", "Unlink", "Anchor" ],
[ "Image", "Flash", "Table", "HorizontalRule", "Iframe" ]

You can cre­ate cus­tom styles by manu­ally enter­ing code in the fol­low­ing format (see the CKEd­it­or styles docs)

{ name: "Red Title", element: "h3", styles: { "color": "Red" } },
{ name: "CSS Style", element: "span", attributes: { "class": "my_style" } },
{ name: "Marker: Yellow", element: "span", styles: { "background-color": "Yellow" } }

Email Stat­ist­ics #

Fire­Mail auto­mat­ic­ally tracks the num­ber of opens, clicks, and unscub­scribes that your email gen­er­ates. An email can only be recor­ded as opened if the reader’s email cli­ent is cap­able of dis­play­ing html with images and if that option is turned on. If it is not, then there is no way to record open rates unless the recip­i­ent clicks on one of the links in the email. Bounces can­not be recor­ded since these need to be setup on the email server.

Unique Opens
The num­ber of recip­i­ents that opened the email (see notes about opens above)

The num­ber of recip­i­ents that clicked on at least one link in the email

The num­ber of recip­i­ents that unsub­scribed from a mail­ing list using the unsub­scribe link in the email

Not Opened
The num­ber of recip­i­ents that did not open the email

CSS in Emails #

When com­pos­ing emails it is import­ant to note that many CSS func­tions are not avail­able. This depends on the email cli­ent, but most not­ably, <style> and <link> tags are stripped out by Gmail. There­fore all styl­ing should be added inline and floats and back­ground images should be avoided. Mak­ing your emails render cor­rectly in the main email cli­ents is chal­len­ging so you should always send sev­er­al test emails beforehand.

This CSS sup­port guide shows you exactly what tags will work in what email cli­ent. Pre­mail­er is a use­ful tool for con­vert­ing code into email cli­ent friendly HTML.

Tem­plate Tags #

The email mes­sage field is passed through ExpressionEngine’s pars­ing engine so you can add any tem­plate tags to the mes­sage. Use the Pre­view Mes­sage link to see how the mes­sage will be rendered. The fol­low­ing tags are also available:

Out­puts a url that will link dir­ectly to the email 

Click here to view this email in your browser: {email_link}

This will be replaced with a url that will unsub­scribe the user from a mail­ing list. Note that this only applies to users who are in mail­ing list and should there­fore only be used when send­ing to mail­ing lists. Also note that the email tem­plate in the mail­ing list mod­ule is still applied, so if using this meth­od you should change the email tem­plate to simply {message_text}.

Click here to unsubscribe from the mailing list: {unsubscribe_url}

Use this tag pair to dis­play sent emails in front-end templates 

{exp:firemail:emails member_group="1" mailing_list="2" orderby="subject" sort="asc" limit="10" offset="3"}  
    <a href="{email_link}">{subject}<a>  

Import­ing Tem­plates #

You can cre­ate tem­plates spe­cific­ally for Fire­Mail and spe­cify the tem­plate group in the mod­ule set­tings. This allows you cre­ate an email mes­sage tem­plate with tem­plate tags that will dis­play dynam­ic con­tent, and then import the tem­plate into FireMail.

Enter­ing a query string allows you to alter the out­put of the impor­ted tem­plate. For example, if you were import­ing a tem­plate called newsletter and it was in a tem­plate group called firemail then enter­ing a query string january_2012 would res­ult in the url being impor­ted. The idea here is that you can set up your tem­plate to out­put the cor­rect entry based on a query string such as a url title or entry id. The tem­plate could for example be:

{exp:channel:entries channel="newsletters"}

Then enter­ing the url_title of an entry in the newsletters chan­nel as a query string would import that entry’s text. The same logic can be applied to entry ids, cat­egor­ies, etc.

Batch Send­ing #

Fire­Mail sends emails out in batches in order to pre­vent a sys­tem pro­cessing over­load or timeout. The max­im­um batch size is 100, which should work without prob­lems on most servers.

You can choose wheth­er to send all batches at once or to send just one batch at a time. If you have a ded­ic­ated serv­er then you should be able to send all batches at once without any prob­lems. If how­ever you have a web host­ing account on a shared serv­er (low-cost host­ing) then you should check wheth­er your web host enforces an email send­ing lim­it. If it does then you should send one batch at a time and ensure that you do not go bey­ond the lim­it of emails that can be sent per hour as your web host will most likely block them.

If your web host imposes send­ing lim­its then we highly recom­mend using a ser­vice like Send­Grid which gives you an SMTP account that you can use to send emails without limits.

Errors #

Any errors that are encountered while send­ing will be vis­ible on the main Fire­Mail report page. The indi­vidu­al email addresses that failed will appear at the bot­tom of the email stat­ist­ics page.

Mail­ing Lists #

Fire­Mail uses ExpressionEngine’s nat­ive Mail­ing List add-on. If you want to send to mail­ing lists then ensure that the Mail­ing List mod­ule is installed and that you have changed the email tem­plate to simply {message_text}.


My web host­ing com­pany only allows me to send 300 emails per hour, how should I do this with FireMail?
First of all we highly recom­mend using a ser­vice like Send­Grid which gives you an SMTP account that you can use to send emails without lim­its. If you choose not to do this, then first set the max num­ber of email per hour to 300 in the Fire­Mail set­tings page. We recom­mend set­ting your batch size to max 100 (or 90 if you still want to be able to send some emails from your serv­er) and send­ing 3 batches per hour. Select Send First Batch Only” when you send out your email. It will then appear on the main Fire­Mail page as Incom­plete”. You can then click on the Send Next Batch” two times so that your recip­i­ent count says 300. Then wait an hour and repeat this until all of the emails have been sent out.

Why does noth­ing hap­pen when I try to import a template?
Ensure that you have selec­ted a tem­plate group from the mod­ule set­tings. If you save your tem­plates as files then back them up and then syn­chron­ize your tem­plates. Also ensure that you are using Fire­Mail on the exact domain (with or without www) that is set in your gen­er­al con­fig­ur­a­tion settings.

How can I upload images?
Please ensure that you have cre­ated an upload des­tin­a­tion called Fire­mail”. If you have then you should see a Browse Serv­er” but­ton in the image dia­log. A planned fea­ture is to integ­rate EE’s nat­ive file man­ager into Fire­Mail which will make upload­ing images more intu­it­ive. There is no set date yet but this is a high pri­or­ity fea­ture and will be added in the near future.

Is it pos­sible to save email drafts without send­ing them?
This is a planned fea­ture but at present it is not pos­sible. A simple work­around is to cre­ate an email draft and send it to your­self. Then when you go to the main Fire­Mail page you will see the sent email and click­ing on Open Email” will allow you to edit the email and send it again.

How does Fire­Mail handle bounced emails?
In order to auto­mat­ic­ally handle bounces your email serv­er would need to be con­figured. Since there is such a wide vari­ety of serv­ers and host­ing plans Fire­Mail does not sup­port auto­mat­ic hand­ling of bounces. For that reas­on we recom­mend that you cre­ate an email address spe­cific­ally for send­ing mass mails (for example no-​[email protected]​mydomain.​com) so that all bounces will be kept in the same place. It is also recom­men­ded that you remove bounced email addresses from your mail­ing lists so that your ip address does not get blacklisted.

How can I check if my email serv­er has been blacklisted?
You can try a ser­vice should as this one how­ever from our tests the res­ults are not always 100% accurate.

Do I need to pur­chase a license of CKEditor?
No, Fire­Mail is covered by an OEM Closed Dis­tri­bu­tion License (CDL) which means that you do not need to pur­chase a license of CKEditor.

Changelog #

Ver­sion 1.9.3 #
  • Fixed html inline style issue by set­ting edit­or to fixed height
Ver­sion 1.9.2 #
  • Updated times on graph to be localized
  • Fixed bug with curly braces being encoded in web browser view
Ver­sion 1.9.1 #
  • Added Advanced Con­tent Fil­ter setting
  • Fixed bug with error report­ing if no errors found
Ver­sion 1.9.0 #
  • Added error cap­ture and report­ing so emails con­tin­ue send­ing even if an error is encountered
  • Added abil­ity to add cus­tom toolbar
  • Added abil­ity to add styles to toolbar
  • Updated CKEd­it­or to 4.4.7
Ver­sion 1.8.17 #
  • Fixed dia­log input field paddng and spacing
Ver­sion 1.8.16 #
  • Fixed bug in deprec­ated EE function
Ver­sion 1.8.15 #
  • Fixed tem­plate com­ment bug in EE 2.9.0
  • Fixed minor bugs
Ver­sion 1.8.14 #

Thanks to Ger­hard Dalen­oort for his con­tri­bu­tions to this release.

  • Made it pos­sible to use head and body tags in CKEditor
  • Fixed bug with XID in error messages
  • Fixed minor bugs
Ver­sion 1.8.13 #
  • Fixed bug with XID not allow­ing mul­tiple pre­views in EE pre 2.7
Ver­sion 1.8.12 #
  • Fixed bug for new installs of pre­vi­ous version
Ver­sion 1.8.11 #
  • Added MSM site spe­cif­ic settings
  • Fixed bug with XID not allow­ing mul­tiple previews
Ver­sion 1.8.10 #
  • Improved func­tion­al­ity with MSM sites
Ver­sion 1.8.9 #
  • Added set­ting to enable Rich Text Edit­or by default
  • Sta­bil­ity improvements
Ver­sion 1.8.8 #
  • Removed all deprec­ated EE functions
Ver­sion 1.8.7 #
  • Rich Text Edit­or (WYSI­WYG) can now be enabled and disabled
Ver­sion 1.8.6 #
  • Added sup­port for moved third-party themes folder
Ver­sion 1.8.5 #
  • Added com­pat­ib­il­ity for EE 2.6.1
Ver­sion 1.8.4 #
  • Added com­pat­ib­il­ity for EE 2.6.0
Ver­sion 1.8.3 #
  • Added safe­guard to ensure batch size is set
Ver­sion 1.8.2 #
  • Switched CKEd­it­or to silk” theme (attri­bu­tions)
  • Added Accep­ted Admin Email setting
Ver­sion 1.8.1 #
  • Improved out­put messages
  • Gen­er­al bufixes
Ver­sion 1.8 #
  • Added max emails per hour set­ting and check
  • Added query string option when import­ing templates
  • Added num­ber of emails to mail­ing lists and mem­ber groups
  • Made mail­ing lists and mem­ber groups clickable
  • Updated CKEd­it­or to ver­sion 3.6.2
  • Bug­fix for urls when import­ing tem­plates with chan­nel entries tags
  • Bug­fix for ses­sion start
Ver­sion 1.7.4 #
  • Moved some rogue text from view files into lan­guage files
Ver­sion 1.7.3 #
  • Made com­pat­ible with EE 2.2
Ver­sion 1.7.2 #
  • Minor bug­fixes
Ver­sion 1.7.1 #
  • Fixed theme folder path bug
Ver­sion 1.7 #
  • Added add-on settings
Ver­sion 1.6 #
  • Improved sta­bil­ity dur­ing sending
  • Added abil­ity to import all templates
  • Restyled edit­or and buttons
  • Added EE styled dia­logs when adding links and images
  • Updated ver­sion of CKEditor
  • Minor fea­tures and bugfixes
Ver­sion 1.5.2 #
  • Improved code stability
  • Removed unne­ces­sary tool­bar icons
Ver­sion 1.5.1 #
  • Added base_​url to cked­it­or config
Ver­sion 1.5 #
  • Added {unsubscribe_​url} tag
  • Fixed bug with import­ing tem­plates in the case when index.php has been renamed
  • Fixed bug with {email_​link} tag when send­ing in batches
  • Fixed bug that some­times occured when send­ing all batches at once
  • Moved theme folder to themes/​third_​party
Ver­sion 1.4.1 #
  • Added orderby, sort, lim­it and off­set para­met­ers to {exp:firemail:emails} tag
  • Fixed url to themes folder if folder renamed
Ver­sion 1.4 #
  • Added tem­plate tag pars­ing to emails
  • Added tem­plate import field that pulls in a parsed EE template
  • Added mes­sage preview
Ver­sion 1.3 #
  • Added {email_​link} tag so emails can be viewed in browser
  • Added auto-fill to plain­text ver­sion on email
  • Added file man­ager so images can be uploaded and placed dir­ectly into email
  • Added sample email tem­plates to CKEditor
  • Moved CKEd­it­or files into themes folder
Ver­sion 1.2 #
  • Emails checked for unique­ness before send­ing so that no duplic­ates are sent
  • Added CSV export option
  • Added PDF export option
  • Added pre­view but­ton to email editor
Ver­sion 1.1 #
  • Added option to send all batches at once or just the first batch
  • Added seper­ate view file ckeditor_config.php for easy cus­tom­isa­tion of email editor
  • Minor bug­fixes
Ver­sion 1.0.1 #
  • Changed email WYSI­WYG edit­or from TinyMCE to CKEd­it­or 3.1 (which sup­ports templates)
  • Minor bug­fixes
Ver­sion 1.0 #
  • Ini­tial release