All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
2.8.0 - 2023-09-13
- Github Support Files
- Github Action Updates
- ColdBox 7 Auto Testing
- New
start:fakemail
command to start FakeSMTP for testing - Addded fake smtp server for testing on the harness
- Skipping of parsing tokens if the mail type is template to avoid complex data in the send-grip protocol #34
- Fix usage of invalid named member function #33 (#33)
A big thanks to @richardherbert for all the updates in this release.
- FIXED var scoping of attachments variable
- Updated to handle a response that is not JSON
- 🐛 FIX: Update GHA to avoid deprecated syntax
- Added test for MAILGUN_BASEURL property
- Updated to make MAILGUN_APIURL optional
- Added support for Mailgun EU region by making MAILGUN_APIURL an optional property with https://api.mailgun.net/v3/ as the default.
- Updated all GHA actions to latest versions and moved to use
temurin
Java distributions from adopt due to deprecation of the service.
- If the incoming
layout
arugment for thesetView()
method in the mail is empty, it should ignore it.
- Less verbosity for the mail queue log
- New ColdBox 7 delegate
Mailable@cbmailservices
so you can easily add mailing capabilities to objects
- Fixing asset version
- More updates of injections to generic
box
instead ofcoldbox
.
- Updated injections to generic
box
instead ofcoldbox
.
- Fix github action
- Fixed build process so it doesn't include
box.bin
in the final artifact.
- Added mailgun protocol to available mail protocols @scottsteinbeck
- Ability for the
preMailSend
event to influence themail
record thanks to @gpickin - Getters only work if there is a
variables.config
key in existence. Add reasonable defaults for commonly accessed mail fields - New module setting:
runQueueTask
which is defaulted totrue
. Iffalse
it will not run the mail queue task in the background
-snapshot
left on the box.json
- Github actions standards via new module template
- Reusable Workflows
- Fix for Default-Settings overwrites Mail-Bean Payload
- Fixed
getFileMimeType()
so postmark attachments can work. Thanks to @garciadev
- BOX-119 CBMailService - Setting the defaultProtocol in moduleSettings to something other than default gets ignored
COMPATIBILITY
: Settings are now using ColdBox 5 module approach ofmoduleSettings.cbmailservices
instead of a root key element calledcbmailservices
. Make sure you update your settings and move them tomodulesettings.cbmailservices
COMPATIBILITY
: Changed all arguments calleddefault
todefaultValue
to avoid ACF issues with the parserMail
objectconfig()
renamed toconfigure()
- The return results structure from the protocols
errorArray
has been renamed to justmessages
as it can contain warnings, information messages as well as error messages - PostmarkAPI result returns
MessageID
instead ofmessage_id
now.
- Ability for the mail payload to render the body from a view or a view/layout combination using the
setView()
method. - New ability to queue mail for sending using the async scheduler for the module and the new
queue()
method - New asynchronous mail sending via
sendAsync()
which returns a ColdBox Future - New mixin helper:
newMail()
so you can get access to send mails easily in handlers and interceptors. - In order to run and validate SMPT tests, we now use FakeSMTP as a container located in /test-harnes/tests/resources/docker-compose.yml. This will send mail to disk for us when testing smtp. If you want to run the tests on your machine, you will need to startup the container.
- Every protocol now has a
log
LogBox logger configured object thanks to theAbstractProtocol
. - Every protocol gets a
name
property now for a numan readable name thanks to theAbstractProtocol
. Mail
object now can send itself via the newsend()
method which delegates to the service, but provides a nice sending DSL.Mail
object now has dynamic getters and setters for ALL configuration objects.- You can now use aliases to build out any of the core protocols:
CFMail, File, InMemory, Null or Postmark
instead of the full path. - You can now use a wirebox id or class path as the protocol class apart from the core protocols.
- Added ability for the
getProperty( property, defaultValue )
method on the abstract protocol to have a default value. - Migration to script of all core items.
- Migration to github actions.
- Adobe 2021 Support.
- Modernization of all source code.
MailSettingsBean
removed in favor of a more cohesiveMailService
protocol
setting removed in favor of multiple mailers approach anddefaultProtocol
usage. Please see docs.- Adobe ColdFusion 2016 Support.
- Two new protocols:
NullProtocol, InMemoryProtocol
- The
NullProtocol
ignores all calls to it. - The
InMemoryProtocol
stores mail mementos in an internal array. This can be useful for testing to check that mail was sent. It also includes a handlehasMessage
method which takes a predicate callback and checks it against each sent mail. Areset
method is included for use inside tests.
- The
- New CI updates and code quality systems
- New updates for ColdBox 6
- Added a
fromName
to the Mail bean to track names due to some protocols allowing it - The module will register two interception points.
PreMailSend
andPostMailSend
- New module layout
- Removed unecessary routing endpoint
- Var scoping issue
- Fixes incorrect argument collection nesting on protocol registration
- Auto create folder paths in FileProtocol if they do not exist
- Updated to use module templating
- Proposed additionalInfo data struct for provider specific implementations. Added a couple of helper methods : #5
- Updated to leverage WireBox for object creations instead of internal new and createobjects
- Fix on date formatting on file protocol thanks to @elpete
- Fix for type inclusion on the file protocol thanks to @elpete
- Travis integration
- DocBox updates
- Build process updates
- Updated build process
- Updated readme and instructions
- Create first module version