Download and unzip FireMail, then follow the simple steps below:
Download and unzip the latest version of FireMail, then follow the steps below:
There are a number of module settings which you can change:

FireMail automatically tracks the number of opens, clicks, and unscubscribes that your email generates. An email can only be recorded as opened if the reader's email client is capable of displaying 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 recipient clicks on one of the links in the email. Bounces cannot be recorded since these need to be setup on the email server.

When composing emails it is important to note that many CSS functions are not available. This depends on the email client, but most notably, <style> and <link> tags are stripped out by Gmail. Therefore all styling should be added inline and floats and background images should be avoided. Making your emails render correctly in the main email clients is challenging so you should always send several test emails beforehand.
This CSS support guide shows you exactly what tags will work in what email client. Premailer is a useful tool for converting code into email client friendly HTML.
The email message field is passed through ExpressionEngine's parsing engine so you can add any template tags to the message. Use the Preview Message link to see how the message will be rendered. The following tags are also available:
Click here to view this email in your browser: {email_link}Click here to unsubscribe from the mailing list: {unsubscribe_url}{exp:firemail:emails member_group="1" mailing_list="2" orderby="subject" sort="asc" limit="10" offset="3"}
<a href="{email_link}">{subject}<a>
{/exp:firemail:emails}You can create templates specifically for FireMail and specify the template group in the module settings. This allows you create an email message template with template tags that will display dynamic content, and then import the template into FireMail.
Entering a query string allows you to alter the output of the imported template. For example, if you were importing a template called newsletter and it was in a template group called firemail then entering a query string january_2012 would result in the url http://www.site.com/firemail/newsletter/january_2012 being imported. The idea here is that you can set up your template to output the correct entry based on a query string such as a url title or entry id. The template could for example be:
{exp:channel:entries channel="newsletters"}
{text}
{/exp:channel:entries}
Then entering the url_title of an entry in the newsletters channel as a query string would import that entry's text. The same logic can be applied to entry ids, categories, etc.
FireMail sends emails out in batches in order to prevent a system processing overload or timeout. The maximum batch size is 100, which should work without problems on most servers.
You can choose whether to send all batches at once or to send just one batch at a time. If you have a dedicated server then you should be able to send all batches at once without any problems. If however you have a web hosting account on a shared server (low-cost hosting) then you should check whether your web host enforces an email sending limit. If it does then you should send one batch at a time and ensure that you do not go beyond the limit of emails that can be sent per hour as your web host will most likely block them.
If your webhost imposes sending limits then we highly recommend using a service like SendGrid which gives you an SMTP account that you can use to send emails without limits.

FireMail uses ExpressionEngine's native Mailing List add-on. If you want to send to mailing lists then ensure that the Mailing List module is installed and that you have changed the email template to simply {message_text}.