Skip to content

Commit d57d93e

Browse files
committed
add mail template #248
1 parent 99c3feb commit d57d93e

File tree

4 files changed

+38
-13
lines changed

4 files changed

+38
-13
lines changed

server/application-server/src/main/java/de/tum/in/www1/hephaestus/notification/MailBuilder.java

+21-2
Original file line numberDiff line numberDiff line change
@@ -74,12 +74,30 @@ public MailBuilder addPrimaryRecipient(User user) {
7474
return this;
7575
}
7676

77+
public MailBuilder fillPlaceholder(String placeholder, Object value) {
78+
this.variables.put(placeholder, value);
79+
80+
return this;
81+
}
82+
83+
public MailBuilder fillUserPlaceholders(User user, String placeholder) {
84+
fillPlaceholder(placeholder, UserInfoDTO.fromUser(user));
85+
86+
return this;
87+
}
88+
89+
public MailBuilder fillBadPracticePlaceholders(String badPractice, String placeholder) {
90+
fillPlaceholder(placeholder, badPractice);
91+
92+
return this;
93+
}
94+
7795

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

8199
for (User recipient : primaryRecipients) {
82-
if (!recipient.isNotificationsEnabled()) {
100+
if (!recipient.isNotificationsEnabled() || recipient.getEmail() == null || !recipient.getEmail().contains("@")) {
83101
continue;
84102
}
85103
toRecipients.add(recipient);
@@ -89,7 +107,7 @@ public void send(JavaMailSender mailSender) {
89107
try {
90108
MimeMessage message = mailSender.createMimeMessage();
91109

92-
message.setFrom("ThesisManagement <" + config.getSender().getAddress() + ">");
110+
message.setFrom("Hephaestus <" + config.getSender().getAddress() + ">");
93111
message.setSender(config.getSender());
94112

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

111129
if (config.isEnabled()) {
130+
log.info("Sending Mail\n{}", messageBody.getContent());
112131
mailSender.send(message);
113132
} else {
114133
log.info("Sending Mail (postfix disabled)\n{}", messageBody.getContent());

server/application-server/src/main/java/de/tum/in/www1/hephaestus/notification/MailConfig.java

+2-9
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,6 @@ public class MailConfig {
1515

1616
private final Boolean enabled;
1717

18-
@Getter
19-
private final String clientHost;
20-
2118
@Getter
2219
private final InternetAddress sender;
2320

@@ -32,13 +29,11 @@ public MailConfig(
3229
@Value("${hephaestus.mail.sender}") InternetAddress sender,
3330
@Value("${hephaestus.mail.enabled}") boolean enabled,
3431
@Value("${hephaestus.mail.signature}") String mailSignature,
35-
@Value("${hephaestus.client.host}") String clientHost,
3632
TemplateEngine templateEngine
3733
) {
3834
this.enabled = enabled;
3935
this.sender = sender;
4036
this.signature = mailSignature;
41-
this.clientHost = clientHost;
4237
this.templateEngine = templateEngine;
4338
}
4439

@@ -47,14 +42,12 @@ public boolean isEnabled() {
4742
}
4843

4944
public record MailConfigDto(
50-
String signature,
51-
String clientHost
45+
String signature
5246
) {}
5347

5448
public MailConfigDto getConfigDto() {
5549
return new MailConfigDto(
56-
Objects.requireNonNullElse(signature, ""),
57-
Objects.requireNonNullElse(getClientHost(), "")
50+
Objects.requireNonNullElse(signature, "")
5851
);
5952
}
6053
}

server/application-server/src/main/java/de/tum/in/www1/hephaestus/notification/MailService.java

+12-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
package de.tum.in.www1.hephaestus.notification;
22

33
import de.tum.in.www1.hephaestus.gitprovider.user.User;
4+
import de.tum.in.www1.hephaestus.gitprovider.user.UserService;
5+
import org.slf4j.Logger;
6+
import org.slf4j.LoggerFactory;
47
import org.springframework.beans.factory.annotation.Autowired;
58
import org.springframework.mail.javamail.JavaMailSender;
69
import org.springframework.stereotype.Service;
@@ -10,6 +13,8 @@
1013
@Service
1114
public class MailService {
1215

16+
private static final Logger logger = LoggerFactory.getLogger(MailService.class);
17+
1318
private final JavaMailSender javaMailSender;
1419

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

23-
public void sendBadPracticesDetectedEmail(User user, List<String> badPractices) {
28+
public void sendBadPracticesDetectedEmail(User user, String badPractice) {
29+
logger.info("Sending bad practice detected email to user: " + user.getLogin());
30+
if (!user.getLogin().equals("iam-flo"))
31+
return;
32+
2433
MailBuilder mailBuilder = new MailBuilder(mailConfig, "Bad Practices Detected", "bad-practices-detected");
2534
mailBuilder
2635
.addPrimaryRecipient(user)
36+
.fillUserPlaceholders(user, "user")
37+
.fillBadPracticePlaceholders(badPractice, "badPractice")
2738
.send(javaMailSender);
2839
}
2940
}
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
11
<p th:inline="text">
2-
Bad practice detected.
2+
Hi [[${user.name}]],
3+
<br>
4+
We have detected the bad practice [[${badPractice}]] in your pull request. Please review the issue on Hephaestus.
35
</p>

0 commit comments

Comments
 (0)