anchor.diff:  GroovyObject jiveFormatter = (GroovyObject) groovyClass.newInstance();
   ----
   
  -=== Plugins
  -
  -* https://plugins.jenkins.io/email-ext-recipients-column/[Email Ext Recipients Column Plugin]
  -* https://plugins.jenkins.io/job-direct-mail/[Job Direct Mail Plugin]
  -* https://plugins.jenkins.io/pom2config/[Pom2Config Plugin]
  -* https://plugins.jenkins.io/github-pullrequest/[GitHub Integration Plugin]
  -* https://plugins.jenkins.io/emailext-template/[Email-ext Template Plugin]
  -* https://plugins.jenkins.io/configurationslicing/[Configuration Slicing Plugin]
  -* https://plugins.jenkins.io/view-job-filters/[View Job Filters]
  -* https://plugins.jenkins.io/run-condition-extras/[Run Condition Extras Plugin]
  -
  -== Contributing
  -
  -Refer to our https://github.com/jenkinsci/.github/blob/master/CONTRIBUTING.md[contribution guidelines].
  -
  -Make sure you have installed http://maven.apache.org/[Maven 3] 
  -and JDK 8.0 or later. Make also sure you have properly configured your
  -`~/.m2/settings.xml` as explained in the https://jenkins.io/doc/developer/tutorial/[Plugin Tutorial].
  -Those are needed to build properly any Jenkins plugin.
  -
  -=== Check out and build
  -
  -How to check out the source and build:
  -
  -[source,sh]
  -----
  -git clone git@github.com:jenkinsci/email-ext-plugin.git
  -cd email-ext-plugin
  -mvn clean install
  -----
  -
  -== Version History
  -
  -Please refer to xref:CHANGELOG.adoc[the changelog].
  +== Related Plugins
  +
  +* https://plugins.jenkins.io/email-ext-recipients-column/[Email Ext Recipients Column plugin]
  +* https://plugins.jenkins.io/job-direct-mail/[Job Direct Mail plugin]
  +* https://plugins.jenkins.io/pom2config/[pom2config plugin]
  +* https://plugins.jenkins.io/github-pullrequest/[GitHub Integration plugin]
  +* https://plugins.jenkins.io/emailext-template/[Email-ext Template plugin]
  +* https://plugins.jenkins.io/configurationslicing/[Configuration Slicing plugin]
  +* https://plugins.jenkins.io/view-job-filters/[View Job Filters plugin]
  +* https://plugins.jenkins.io/run-condition-extras/[Run Condition Extras plugin]
  
positive.code: [[email-ext-plugin]]
  = email-ext-plugin
  :toc: macro
  :toc-title:
  ifdef::env-github[]
  
negative.code: https://github.com/jenkinsci/email-ext-plugin/releases/latest[image:https://img.shields.io/github/release/jenkinsci/email-ext-plugin.svg?label=changelog[GitHub release]]
  https://plugins.jenkins.io/email-ext[image:https://img.shields.io/jenkins/plugin/i/email-ext.svg?color=blue[Jenkins Plugin Installs]]
  
  This plugin allows you to configure every aspect of email notifications.
  You can customize when an email is sent, who should receive it, and what
  the email says.
  
  toc::[]
  
  == Introduction
  
  This plugin extends the https://plugins.jenkins.io/mailer/[Mailer
  plugin]'s functionality by giving you more control. It provides
  customization of three areas:
  
  * *Triggers* - Select the conditions that should cause an email
  notification to be sent.
  * *Content* - Specify the content of each triggered email's subject
  and body.
  * *Recipients* - Specify who should receive an email when it is
  triggered.
  
  == Questions and Issues
  
  If you need help, please post on the
  https://jenkins.io/mailing-lists/[Jenkins users mailing list] or
  https://stackoverflow.com/questions/tagged/email-ext[Stack Overflow].
  
  Report bugs and requests for enhancement in the
  https://issues.jenkins-ci.org/[Jenkins issue tracker] (no support
  tickets, please). Use the `email-ext-plugin` component in the `JENKINS`
  project.
  
  == Documentation
  
  * xref:docs/recipes.adoc[Recipes]
  * https://github.com/jenkinsci/.github/blob/master/CONTRIBUTING.md[Contribution guidelines]
  * xref:CHANGELOG.adoc[Changelog]
  
  == Getting Started
  
  === System-wide configuration
  
  Before using this plugin from a project, you must first configure some
  system-wide settings. Go to the Jenkins system-wide configuration page
  (*Manage Jenkins*, *Configure System*).
  
  The configuration for this plugin can be found in the section entitled
  *Extended E-mail Notification*. This configuration should match the
  settings for your SMTP mail server. This section mirrors that of the
  https://plugins.jenkins.io/mailer/[Mailer plugin] in the *E-mail
  Notification* section; however, there are a few additions. The fields
  labeled *Default Subject* and *Default Content* allow you to configure
  the subject and content on a system-wide level. The field labeled
  *Default Recipients* can be used to set a default list of email
  addresses for all projects using this plugin (it can be overridden at
  the project level). This can be used to greatly simplify the
  configuration you need to do for all projects.
  
  === Project configuration
  
  For a project to use this plugin, you need to enable it in the project
  configuration page. In the *Post-build Actions* section, click on *Add
  post-build action* and then select *Editable Email Notification*.
  
  There are three main fields that you can edit when this plugin is
  enabled:
  
  * *Project Recipient List* - This is a comma (or whitespace)
  separated list of email recipients. Allows you to specify a single
  recipient list for each email that is sent.
  * *Default Subject* - This allows you to configure a token (more
  about tokens later) that can be used to easily configure all email
  subjects for the project.
  * *Default Content* - Same as *Default Subject*, but for the email
  body instead of the subject.
  
  === Pipeline step
  
  This plugin can be used from
  https://www.jenkins.io/doc/book/pipeline/[Pipeline] via the
  https://jenkins.io/doc/pipeline/steps/email-ext/[`emailext`] step:
  
  [source,groovy]
  ----
  emailext body: 'Test Message',
      subject: 'Test Subject',
      to: 'test@example.com'
  ----
  
  Use the `recipientProviders` parameter to add additional recipients. For
  example, to add all the people who caused a change in the change set and
  the user who initiated the build:
  
  [source,groovy]
  ----
  emailext body: 'Test Message',
      recipientProviders: [developers(), requestor()],
      subject: 'Test Subject',
      to: 'test@example.com'
  ----
  
  The recipient providers from this plugin can also be used with the
  https://plugins.jenkins.io/mailer/[Mailer plugin]. For example, to add
  culprits and the user who initiated the build:
  
  [source,groovy]
  ----
  step([$class: 'Mailer',
    notifyEveryUnstableBuild: true,
    recipients: emailextrecipients([culprits(), requestor()])])
  ----
  
  == Usage
  
  To see the advanced configuration for this plugin, click on the
  *Advanced* button. This section allows you to specify recipients for
  each type of email trigger as well as a pre-send script that can be used
  to modify the email just prior to sending.
  
  === Pre-send Scripts and Post-send Scripts
  
  This feature allows you to write a script that can modify the
  https://docs.oracle.com/javaee/7/api/javax/mail/internet/MimeMessage.html[`MimeMessage`]
  object before or after sending the email. This allows adding custom
  headers, modifying the body, etc. Predefined variables include:
  
  * `msg` (https://docs.oracle.com/javaee/7/api/javax/mail/internet/MimeMessage.html[`javax.mail.internet.MimeMessage`]) - The MIME email message object, which can be modified.
  * `logger` (https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html[`java.io.PrintStream`]) - A `PrintStream` that can be used to log messages to the build log.
  * `build` (https://javadoc.jenkins-ci.org/hudson/model/AbstractBuild.html[`hudson.model.AbstractBuild`]) - The build this message belongs to (only use with Freestyle projects).
  * `run` (https://javadoc.jenkins-ci.org/hudson/model/Run.html[`hudson.model.Run`]) - The build this message belongs to (may be used with Freestyle projects or Pipeline).
  * `cancel` (boolean) - When set to true, cancels the sending of the email.
  
  === Triggers
  
  By default, the only trigger configured is the *Failure - Any* trigger.
  To add more triggers, select one from the drop-down and it will be added
  to the list. Once you have added a trigger, you have several options. To
  see what conditions must be met for this plugin to send an email, click
  on the "?" (question mark) next to the trigger.
  
  * *Recipient List* - Add this recipient provider if you would like
  to have the email sent to the *Project Recipient List* configured above.
  * *Developers* - Add this recipient provider to send the email to
  anyone who checked in code for the last build. This plugin will generate
  an email address based on the committer's ID and an appended *Default
  user e-mail suffix* from the *Extended E-mail Notification section* of
  the *Configure System* page. For example, if a change was committed by
  someone with an ID of `first.last`, and the default user e-mail suffix
  is `@somewhere.com`, then an email will be sent to
  `first.last@somewhere.com`.
  * *Requestor* - Add this recipient provider to send an email to the
  user who initiated the build (if initiated by a user manually).
  * *Include Culprits* - If this recipient provider _and_ the *Developers*
  recipient provider are added, emails will include everyone who committed
  since the last successful build.
  * *Advanced* - Configure properties at a per-trigger level.
   ** *Recipient List* - A comma (or whitespace) separated list of email
  address that should receive this email if it is triggered. This list is
  appended to the *Project Recipient List* described above.
   ** *Subject* - Specify the subject line of the selected email.
   ** *Content* - Specify the body of the selected email.
  
  You can also add *Script - After Build* or *Script - Before Build*
  triggers to a project to use Groovy scripts to define before or after
  the build whether or not the email will be sent. The script is defined
  in the *Groovy Script* section of the trigger. There are four objects
  added to the model for the script to use to interact with the build:
  
  * `out` (https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html[`java.io.PrintStream`]): A `PrintStream` that can be used to log messages to the build log.
  * `build` (https://javadoc.jenkins-ci.org/hudson/model/AbstractBuild.html[`hudson.model.AbstractBuild`]): This is the current build, usually a subclass of `AbstractBuild`.
  * `project` (https://javadoc.jenkins-ci.org/hudson/model/AbstractProject.html[`hudson.model.AbstractProject`]): The project object that the current build was started from, usually a subclass of `AbstractProject`.
  * `rooturl` (https://docs.oracle.com/javase/8/docs/api/java/lang/String.html[`String`]): The Jenkins instance root URL, useful for links.
  
  The last line in the script should resolve to a boolean (`true` or
  `false`). For example:
  
  * *Script - Before Build*:
  
  [source,groovy]
  ----
  