Skip to content

Commit 6d9469c

Browse files
authored
Merge branch 'main' into MUXDBS-104-move-tasks
2 parents 461a42e + 4bcdda8 commit 6d9469c

File tree

2 files changed

+27
-5
lines changed
  • ticketing-eventing/mail-handler-service

2 files changed

+27
-5
lines changed

ticketing-eventing/mail-handler-service/pom.xml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,9 @@
4545
<spring-cloud-dependencies.version>2025.0.0</spring-cloud-dependencies.version> <!-- Must match the chosen Spring Boot version -->
4646
<dbs-handler-core.version>0.2.0</dbs-handler-core.version>
4747

48+
<!-- Apache Libs -->
49+
<tika.version>2.9.2</tika.version>
50+
4851
<!-- Logging -->
4952
<logstash-logback-encoder.version>8.1</logstash-logback-encoder.version>
5053

@@ -120,6 +123,14 @@
120123
<artifactId>spring-boot-starter-oauth2-client</artifactId>
121124
</dependency>
122125

126+
<!-- Apache Libs-->
127+
<dependency>
128+
<groupId>org.apache.tika</groupId>
129+
<artifactId>tika-core</artifactId>
130+
<version>${tika.version}</version>
131+
</dependency>
132+
133+
123134
<!-- DBS -->
124135
<dependency>
125136
<groupId>de.muenchen.oss.dbs.ticketing.eventing</groupId>

ticketing-eventing/mail-handler-service/src/main/java/de/muenchen/oss/dbs/ticketing/eventing/mailhandler/adapter/out/mail/MailAdapter.java

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,13 @@
55
import jakarta.mail.MessagingException;
66
import jakarta.mail.internet.MimeMessage;
77
import jakarta.mail.util.ByteArrayDataSource;
8+
import java.io.BufferedInputStream;
89
import java.io.IOException;
910
import java.io.InputStream;
1011
import java.util.Map;
1112
import lombok.RequiredArgsConstructor;
1213
import lombok.extern.slf4j.Slf4j;
14+
import org.apache.tika.Tika;
1315
import org.springframework.mail.javamail.JavaMailSender;
1416
import org.springframework.mail.javamail.MimeMessageHelper;
1517
import org.springframework.stereotype.Service;
@@ -20,29 +22,38 @@
2022
public class MailAdapter implements SendMailOutPort {
2123
private final JavaMailSender mailSender;
2224
private final MailProperties mailProperties;
25+
private final Tika tika = new Tika();
2326

2427
@Override
2528
public void sendMail(final MailMessage mailMessage) {
2629
final MimeMessage mimeMessage = mailSender.createMimeMessage();
2730
try {
28-
final MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true, "utf-8");
31+
final MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, MimeMessageHelper.MULTIPART_MODE_MIXED);
2932
helper.setFrom(mailProperties.getFromAddress());
3033
helper.setTo(mailMessage.getRecipient());
3134
helper.setSubject(mailMessage.getSubject());
3235
helper.setText(mailMessage.getBody(), true);
3336
for (final Map.Entry<String, InputStream> entry : mailMessage.getAttachments().entrySet()) {
3437
//TODO is there a way to do this with streaming? The following line loads the attachment into RAM...
35-
final DataSource dataSource = new ByteArrayDataSource(entry.getValue(), "application/octet-stream");
36-
helper.addAttachment(entry.getKey(), dataSource);
37-
//maybe like this?
38-
//helper.addAttachment(e.getKey(), new InputStreamSourceImpl(e.getValue()));
38+
try (InputStream bis = new BufferedInputStream(entry.getValue())) {
39+
final String mime = detectMimeType(bis);
40+
log.debug("Mime-Type for " + entry.getKey() + " found " + mime);
41+
final DataSource dataSource = new ByteArrayDataSource(bis, mime);
42+
helper.addAttachment(entry.getKey(), dataSource);
43+
//maybe like this?
44+
//helper.addAttachment(e.getKey(), new InputStreamSourceImpl(e.getValue()));
45+
}
3946
}
4047
mailSender.send(mimeMessage);
4148
} catch (final MessagingException | IOException e) {
4249
throw new RuntimeException(e);
4350
}
4451
}
4552

53+
public String detectMimeType(final InputStream inputStream) throws IOException {
54+
return tika.detect(inputStream);
55+
}
56+
4657
// private class InputStreamSourceImpl implements InputStreamSource {
4758
// private final InputStream inputStream;
4859
//

0 commit comments

Comments
 (0)