GreenMail

May 11, 2025 ยท View on GitHub

Build status Maven Central StackOverflow Docker Pulls javadoc

GreenMail allows developers to test email-based applications, services or systems without access to a live mail server. Developers can send, receive, and verify emails by embedding GreenMail in a unit test or running it as a standalone container. GreenMail acts as a virtual (mocking/sandbox) mail server and supports common mail protocols SMTP, IMAP and POP3.

The separate GreenMail Client Integrations project provides a containerized example integration of GreenMail with various web mail clients.

The GreenMail project welcomes any contribution, so go ahead and fork/open a pull request! See the guidelines below.

Version compatibility

GreenMailMail APIExample frameworks
2.1.xJakartaMail 2.1.xJakarta EE 10
2.0.xJakartaMail 2.0.xJakarta EE 9, Spring 6,
1.6.xJakartaMail 1.6.xJakarta EE 8, Spring 5, Apache commons-mail 1.6, ...

Development

  • Build GreenMail from source

    mvn clean install -Pdocker

    This project uses Maven Wrapper for consistent build using Maven 3.9.x or higher, and requires JDK 11 or newer for building.

    • Skip building the docker image by leaving out the -Pdocker profile option
    • Skip long-running integration tests using the Maven option -DskipITs
  • Build the Maven site (and the optional example report)

    mvn site -Psite

  • Build and deploy a release

    For rolling a release including version increment and release upload, do

    mvn clean release:prepare -Prelease,docker,docker-tag-latest mvn release:perform -Prelease,docker,docker-tag-latest

    For a tagged release and deployment to Sonatype OpenSource Repository Hosting and later syncing to Maven Central, do

    mvn clean deploy -Prelease,release-ossrh,docker,docker-tag-latest

    Note: Do only use docker-tag-latest profile if you really want the tag latest, e.g. for newest release of the highest version.

  • Build and deploy a snapshot

    For a Maven Snapshot deployment to Sonatype, do

    mvn clean deploy -Prelease-ossrh,docker

Roadmap

  • 2.1
    • Baseline: Jakarta EE 10
      • JakartaMail 2.1 / Angus Mail
      • Java 11
      • Jersey 3.1.x
    • Only junit 5?
  • 2.0 (branch master)
    • Baseline: Jakarta EE 9
      • JakartaMail 2.0
      • Jersey 3.0.x for servlet 5 / restfulWS-3.0
      • Java 11 for building / running integration tests
    • Java 8
    • Deprecations (no GreenMailRule in greenmail-core, ...)
  • 1.6 (branch releases/1.6.x)
    • Bugfix and maintenance

Contributing

We really appreciate your contribution!

Please check out the contributing guide.

Misc

Many thanks to JProfiler and Jetbrains for supporting this project with free OSS licenses