Implementation of asynchronous e-mailing
This is one of our largest features since the introduction of Quizzard. This merge request introduces asynchronous sending of emails in Quizzard. The idea is that this works with the runtime mail server configuration introduced earlier in #7 (closed), such that e-mails can be sent with the chosen mail server configuration.
This merge requests adds the needed mail services to send mail asynchronously, most importantly the MailSchedulingService
, which is responsible for scheduling the MailJob
s, which consist of one or more Mail
s. These MailJob
s are sent by the ThreadMailJobExecutor
.
In the front-end, the menu now shows a menu option for the mail progress. When clicking this option, a model opens that uses a connection to the /mailjobs
STOMP endpoint (implemented in the new MailJobController
). This STOMP endpoints send updates about the mailjob progress to the front-end, which shows this in the modal. The modal allows seeing extra information about each mailjob by clicking on the title. When more details are asked, the modal subscribes to the /mailjobs/#ID#/mails
endpoint to have in-depth information about the mailjob and its mails.
Finally, this merge request extends #7 (closed) such that the From:
mail header can be set in the mail server configuration. This solves some issues concerning mail spam filters and other protection mechanisms.
This branch should be reviewed very carefully. Although we have Unit tests in place for this part of the application, there is a lot that should be tested manually because we cannot send real e-mails from the Unit test. Besides a comprehensive test of all mail functionality, we should also look into:
-
Check if mass sending of e-mails works correctly on the UTwente mail server. -
Check if there are differences between sending mails authenicated or not authenicated via the UTwente mail server.