User Notification Settings - Finovara

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • MyrinNew
    Senior Member
    • Feb 2024
    • 5168

    #1

    User Notification Settings - Finovara

    Hello everyone!

    In the latest update to Finovara,

    I implemented user notification settings.

    This feature allows users to decide whether they want to receive email notifications for important account events.

    What this feature does

    Users can now enable or disable notifications for important events happening in their account.


    When notifications are enabled and the user:
    • changes their password
    • changes username
    • deleted account


    the system will send an email notification to the address assigned to his account informing his of the change.


    Example of mail sending method:






    @Async
    public void sendEmail(User user, String subject, String templatePath, String username, String email) {
    try {
    MimeMessage message = javaMailSender.createMimeMessage();
    MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8");

    helper.setTo(user.getEmail());
    helper.setFrom("Finovara + senderAddress + ">");
    helper.setReplyTo(senderAddress);
    helper.setSubject(subject);

    String html = loadTemplate(templatePath, username, email);
    helper.setText(html, true);

    javaMailSender.send(message);

    } catch (Exception e) {
    throw new RuntimeException("Failed to send email", e);
    }
    }







    Example loadTemplate:






    private String loadTemplate(String templatePath, String username, String email) {
    try {
    ClassPathResource resource = new ClassPathResource(templatePath);
    try (InputStream inputStream = resource.getInputStream()) {
    String html = new String(inputStream.readAllBytes(), StandardCharsets.UTF_8);

    if (username != null) {
    html = html.replace("{{username}}", username);
    }
    if (email != null) {
    html = html.replace("{{email}}", email);
    }
    return html;
    }
    } catch (Exception e) {
    throw new RuntimeException("Failed to load email template", e);
    }
    }







    Thanks for reading!


    I encourage you to take a look at the process of creating the Finovara application at: https://github.com/M4rc1nek/finovara-backend




    More...
Working...