Jmix provides the following email sending functionality:
Synchronous or asynchronous sending. In case of synchronous sending, the calling code waits till the message is sent to the SMTP server. In case of asynchronous sending, the message is saved to the database, and the control is returned immediately to the calling code. Later, a scheduled task sends the message using a preconfigured number of attempts.
Reliable tracking of message sending timestamp or errors in the database for both synchronous and asynchronous modes.
User interface to search and view information about sent messages, including all message attributes and content, sending status and the number of attempts.