Customizing email content
Jira generates emails in reaction to events using a templating engine. The templating engine is Apache's Velocity. This is a relatively easy to use templating language that can pull apart java objects in useful ways. The mails are generated inside Jira by invoking Velocity with a set of objects of relevance to the event.
Good to know
- If you're looking to change the columns in your filter subscriptions, you don't need to customize the mail templates.
- There's a feature request to improve this at JRA-7266, which you can vote on to improve its chances of being implemented.
Any changes to Velocity templates (as well as JSPs) will be overwritten following a Jira upgrade. In such a case, you will need to manually copy your modified files to the new Jira version. If the Velocity templates and/or JSPs have changed in the newer version, you will have to manually port your customizations into them (as opposed to copying these files directly over from your old Jira installation to your upgraded one).
Customizations to Velocity templates or other Jira files are not included in the scope of Atlassian Support.
Email template locations
Go to the following location in your Jira installation directory:
/atlassian-jira/WEB-INF/classes/templates/email/
If you're using Jira sources files, go to
jira/src/etc/java/templates/email/
instead .- Under this directory, there are three subdirectories:
html
- contains the templates used to create emails in htmltext
- contains the templates used to create plain text mail outssubject
- contains the templates used to generate the subject of the emails
- Bring the template up in your favorite text editor. Refer to the the Jira template documentationand Velocity Users Guide to make the customizations you want.
- Restart Jira.
New email templates
- Create your new
mytemplate.vm
files in thehtml
,text
andsubject
directories, based on the existing files in those directories - Add the templates to
atlassian-jira/WEB-INF/classes/email-template-id-mappings.xml
to make them valid choices for when you are adding a new event.
Advanced customization
The Issue object is passed into the vm
templates. Notice some of its implementation in /includes/summary-topleft.vm
. As an example, calling $issue.getProject()
would allow you to determine the project an issue comes from, and even create logic to show different information for emails from different projects.
Deploying Velocity templates without restarting Jira
In a development instance, you can play with picking up velocity file changes without a restart.
From <jira-install>/atlassian-jira/WEB-INF/classes/velocity.properties
:
- Change
class.resource.loader.cache
fromtrue
tofalse
- Remove the comment sign (
#
) from#velocimacro.library.autoreload=true
Making this change in production will eventually lead to Jira not serving pages along with the 'ran out of parsers' error in the log file.
See also Adding Custom Fields to Email.