Skip to content

Commit

Permalink
add mail template #248
Browse files Browse the repository at this point in the history
  • Loading branch information
iam-flo committed Mar 7, 2025
1 parent e794be4 commit 56062d0
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -74,12 +74,30 @@ public MailBuilder addPrimaryRecipient(User user) {
return this;
}

public MailBuilder fillPlaceholder(String placeholder, Object value) {
this.variables.put(placeholder, value);

return this;
}

public MailBuilder fillUserPlaceholders(User user, String placeholder) {
fillPlaceholder(placeholder, UserInfoDTO.fromUser(user));

return this;
}

public MailBuilder fillBadPracticePlaceholders(String badPractice, String placeholder) {
fillPlaceholder(placeholder, badPractice);

return this;
}


public void send(JavaMailSender mailSender) {
List<User> toRecipients = new ArrayList<>();

for (User recipient : primaryRecipients) {
if (!recipient.isNotificationsEnabled()) {
if (!recipient.isNotificationsEnabled() || recipient.getEmail() == null || !recipient.getEmail().contains("@")) {
continue;
}
toRecipients.add(recipient);
Expand All @@ -89,7 +107,7 @@ public void send(JavaMailSender mailSender) {
try {
MimeMessage message = mailSender.createMimeMessage();

message.setFrom("ThesisManagement <" + config.getSender().getAddress() + ">");
message.setFrom("Hephaestus <" + config.getSender().getAddress() + ">");
message.setSender(config.getSender());

message.addRecipient(Message.RecipientType.TO, new InternetAddress(recipient.getEmail()));
Expand All @@ -109,6 +127,7 @@ public void send(JavaMailSender mailSender) {
message.setContent(messageContent);

if (config.isEnabled()) {
log.info("Sending Mail\n{}", messageBody.getContent());
mailSender.send(message);
} else {
log.info("Sending Mail (postfix disabled)\n{}", messageBody.getContent());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,6 @@ public class MailConfig {

private final Boolean enabled;

@Getter
private final String clientHost;

@Getter
private final InternetAddress sender;

Expand All @@ -32,13 +29,11 @@ public MailConfig(
@Value("${hephaestus.mail.sender}") InternetAddress sender,
@Value("${hephaestus.mail.enabled}") boolean enabled,
@Value("${hephaestus.mail.signature}") String mailSignature,
@Value("${hephaestus.client.host}") String clientHost,
TemplateEngine templateEngine
) {
this.enabled = enabled;
this.sender = sender;
this.signature = mailSignature;
this.clientHost = clientHost;
this.templateEngine = templateEngine;
}

Expand All @@ -47,14 +42,12 @@ public boolean isEnabled() {
}

public record MailConfigDto(
String signature,
String clientHost
String signature
) {}

public MailConfigDto getConfigDto() {
return new MailConfigDto(
Objects.requireNonNullElse(signature, ""),
Objects.requireNonNullElse(getClientHost(), "")
Objects.requireNonNullElse(signature, "")
);
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
package de.tum.in.www1.hephaestus.notification;

import de.tum.in.www1.hephaestus.gitprovider.user.User;
import de.tum.in.www1.hephaestus.gitprovider.user.UserService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Service;
Expand All @@ -10,6 +13,8 @@
@Service
public class MailService {

private static final Logger logger = LoggerFactory.getLogger(MailService.class);

private final JavaMailSender javaMailSender;

private final MailConfig mailConfig;
Expand All @@ -20,10 +25,16 @@ public MailService(JavaMailSender javaMailSender, MailConfig mailConfig) {
this.mailConfig = mailConfig;
}

public void sendBadPracticesDetectedEmail(User user, List<String> badPractices) {
public void sendBadPracticesDetectedEmail(User user, String badPractice) {
logger.info("Sending bad practice detected email to user: " + user.getLogin());
if (!user.getLogin().equals("iam-flo"))
return;

MailBuilder mailBuilder = new MailBuilder(mailConfig, "Bad Practices Detected", "bad-practices-detected");
mailBuilder
.addPrimaryRecipient(user)
.fillUserPlaceholders(user, "user")
.fillBadPracticePlaceholders(badPractice, "badPractice")
.send(javaMailSender);
}
}
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
<p th:inline="text">
Bad practice detected.
Hi [[${user.name}]],
<br>
We have detected the bad practice [[${badPractice}]] in your pull request. Please review the issue on Hephaestus.
</p>

0 comments on commit 56062d0

Please sign in to comment.