Skip to content

Implementation of asynchronous e-mailing

Remco de Man requested to merge fbl_8_async_mailing_capability into dev

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 MailJobs, which consist of one or more Mails. These MailJobs 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.
Edited by Remco de Man

Merge request reports

Loading