Skip to content

greenmail-mail-test/greenmail

Repository files navigation

GreenMail

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

GreenMail Mail API Example frameworks
2.1.x JakartaMail 2.1.x Jakarta EE 10
2.0.x JakartaMail 2.0.x Jakarta EE 9, Spring 6,
1.6.x JakartaMail 1.6.x Jakarta 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,release-ossrh,docker,docker-tag-latest mvn release:perform -Prelease,release-ossrh,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