Testing Action Mailer Messages Locally - department-of-veterans-affairs/caseflow GitHub Wiki
This guide will walk you through how to set up a MailDev server locally for use in ensuring email events are processed in Caseflow correctly.
Running the Local Email Server
In order to have emails from your development instance of Caseflow be sent to a Maildev inbox you only need to follow these two steps:
- In a terminal, run a
maildev
container:
docker run -p 1080:1080 -p 1025:1025 maildev/maildev
- Keep this terminal open, or run the container with
docker run -d
to have it run detached in the background.
- Run the Caseflow backend with the
WITH_TEST_EMAIL_SERVER
environmental variable assignment prepending the typicalmake run-backend
command:
WITH_TEST_EMAIL_SERVER=true make run-backend
That's it! You should now be able to observe email events that have occurred in Caseflow by navigating to http://localhost:1080/ in your web browser.
Tips
Creating an Alias to Start Maildev
For convenience, feel free to add the following line to your runtime config file (~/.bashrc or ~/.zshrc, most likely):
alias start-mail-server="docker run -p 1080:1080 -p 1025:1025 maildev/maildev"
Once you open a new terminal/run source ~/.<rc-file-name>
you will be able to start Maildev with the start-mail-server
command.
Testing Email Events Initiated in the Rails Console
Just like with the Caseflow backend, if you'd like to have the Rails Console send email messages to your local email server you will need to set the WITH_TEST_EMAIL_SERVER
environmental variable prior to opening the console:
WITH_TEST_EMAIL_SERVER=true make c
Testing Email Events Triggered from Jobs
If you need to test email notifications that are being sent out via a job, you can spin up the respective Shoryuken queue with the appropriate make command:
WITH_TEST_EMAIL_SERVER=true make run-low-priority
Setting a Custom SMTP Port
If for whatever reason you require Maildev to listen on a different port than 1025, you can run the container with:
docker run -p 1080:1080 -p XXXX:1025 maildev/maildev
Where XXXX
is your custom port.
To have the Caseflow backend utilize this port, you can set the TEST_MAIL_SERVER_PORT
environmental variable:
WITH_TEST_EMAIL_SERVER=true TEST_MAIL_SERVER_PORT=XXXX make run-backend