Skip to content

Commit d9b1ac7

Browse files
authored
Merge pull request #185 from it-at-m/fix/adapt-mail-for-postkorb
Fix/adapt mail for postkorb
2 parents a05debb + 1823152 commit d9b1ac7

File tree

2 files changed

+24
-2
lines changed
  • ticketing-eventing/mail-handler-service

2 files changed

+24
-2
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: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,14 @@
55
import jakarta.mail.MessagingException;
66
import jakarta.mail.internet.MimeMessage;
77
import jakarta.mail.util.ByteArrayDataSource;
8+
9+
import java.io.BufferedInputStream;
810
import java.io.IOException;
911
import java.io.InputStream;
1012
import java.util.Map;
1113
import lombok.RequiredArgsConstructor;
1214
import lombok.extern.slf4j.Slf4j;
15+
import org.apache.tika.Tika;
1316
import org.springframework.mail.javamail.JavaMailSender;
1417
import org.springframework.mail.javamail.MimeMessageHelper;
1518
import org.springframework.stereotype.Service;
@@ -20,19 +23,23 @@
2023
public class MailAdapter implements SendMailOutPort {
2124
private final JavaMailSender mailSender;
2225
private final MailProperties mailProperties;
26+
private final Tika tika = new Tika();
2327

2428
@Override
2529
public void sendMail(final MailMessage mailMessage) {
2630
final MimeMessage mimeMessage = mailSender.createMimeMessage();
2731
try {
28-
final MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true, "utf-8");
32+
final MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, MimeMessageHelper.MULTIPART_MODE_MIXED);
2933
helper.setFrom(mailProperties.getFromAddress());
3034
helper.setTo(mailMessage.getRecipient());
3135
helper.setSubject(mailMessage.getSubject());
3236
helper.setText(mailMessage.getBody(), true);
3337
for (final Map.Entry<String, InputStream> entry : mailMessage.getAttachments().entrySet()) {
3438
//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");
39+
InputStream bis = new BufferedInputStream(entry.getValue());
40+
String mime = detectMimeType(bis);
41+
log.debug("Mime-Type for " + entry.getKey() + " found " + mime);
42+
final DataSource dataSource = new ByteArrayDataSource(bis, mime);
3643
helper.addAttachment(entry.getKey(), dataSource);
3744
//maybe like this?
3845
//helper.addAttachment(e.getKey(), new InputStreamSourceImpl(e.getValue()));
@@ -43,6 +50,10 @@ public void sendMail(final MailMessage mailMessage) {
4350
}
4451
}
4552

53+
public String detectMimeType(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)