Skip to content

Commit cfaa30d

Browse files
Configure multiple attachment in Email
1 parent 7251c17 commit cfaa30d

3 files changed

Lines changed: 46 additions & 8 deletions

File tree

src/main/java/com/uci/utils/UtilAppConfiguration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ public JavaMailSender getJavaMailSender() {
105105
props.put("mail.transport.protocol", "smtp");
106106
props.put("mail.smtp.auth", "true");
107107
props.put("mail.smtp.starttls.enable", "true");
108-
props.put("mail.debug", "true");
108+
props.put("mail.debug", "false");
109109
return mailSender;
110110

111111
}

src/main/java/com/uci/utils/model/EmailDetails.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import lombok.*;
44

5+
import java.util.Map;
6+
57
@Data
68
@AllArgsConstructor
79
@NoArgsConstructor
@@ -13,4 +15,5 @@ public class EmailDetails {
1315
private String subject;
1416
private String attachment;
1517
private String attachmentFileName;
18+
private Map<String, String> attachments;
1619
}

src/main/java/com/uci/utils/service/EmailServiceImpl.java

Lines changed: 42 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
import java.nio.file.Files;
1919
import java.nio.file.Path;
2020
import java.nio.file.Paths;
21+
import java.util.Arrays;
22+
import java.util.Map;
2123

2224
@Service
2325
@Slf4j
@@ -45,9 +47,12 @@ public void sendSimpleMail(EmailDetails details) {
4547
public void sendMailWithAttachment(EmailDetails details) {
4648
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
4749
MimeMessageHelper mimeMessageHelper;
48-
String tempPath = "/tmp/" + details.getAttachmentFileName();
50+
String tempPath = "/tmp/email/";
4951
File file = new File(tempPath);
5052
try {
53+
if (!file.exists()) {
54+
file.mkdirs();
55+
}
5156
mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
5257
mimeMessageHelper.setFrom(sender);
5358
if (details.getRecipient().contains(",")) {
@@ -58,17 +63,13 @@ public void sendMailWithAttachment(EmailDetails details) {
5863
}
5964
mimeMessageHelper.setText(details.getMsgBody());
6065
mimeMessageHelper.setSubject(details.getSubject());
61-
createTempFile(details.getAttachment(), tempPath);
62-
FileSystemResource fileSystemResource = new FileSystemResource(file);
63-
mimeMessageHelper.addAttachment(fileSystemResource.getFilename(), file);
66+
addAttachments(mimeMessageHelper, details, file.getPath());
6467
javaMailSender.send(mimeMessage);
6568
log.info("Mail sent Successfully...");
6669
} catch (Exception e) {
6770
log.error("Error while sending mail!!! " + e.getMessage());
6871
} finally {
69-
if (file.exists() && file.delete()) {
70-
log.info("file deleted : " + file.getPath());
71-
}
72+
deleteFiles(file);
7273
}
7374
}
7475

@@ -88,4 +89,38 @@ private void createTempFile(String fileData, String filePath) throws IOException
8889
Files.writeString(path, fileData, StandardCharsets.UTF_8);
8990
log.info("Email attachment temp file is created : " + filePath);
9091
}
92+
93+
private void addAttachments(MimeMessageHelper mimeMessageHelper, EmailDetails emailDetails, String rootPath) {
94+
try {
95+
if (emailDetails != null && emailDetails.getAttachments() != null) {
96+
Map<String, String> attachmentMap = emailDetails.getAttachments();
97+
for (String fileName : attachmentMap.keySet()) {
98+
File file = new File(rootPath + File.separator + fileName + ".txt");
99+
String fileData = attachmentMap.get(fileName);
100+
createTempFile(fileData, file.getPath());
101+
FileSystemResource fileSystemResource = new FileSystemResource(file);
102+
mimeMessageHelper.addAttachment(fileSystemResource.getFilename(), file);
103+
}
104+
} else if (emailDetails != null && emailDetails.getAttachment() != null) {
105+
File file = new File(rootPath + File.separator + emailDetails.getAttachmentFileName() + ".txt");
106+
createTempFile(emailDetails.getAttachment(), file.getPath());
107+
FileSystemResource fileSystemResource = new FileSystemResource(file);
108+
mimeMessageHelper.addAttachment(fileSystemResource.getFilename(), file);
109+
} else {
110+
log.error("No Attachment in Email...");
111+
}
112+
} catch (Exception ex) {
113+
log.error("An error occured : " + ex.getMessage());
114+
}
115+
}
116+
117+
public static void deleteFiles(File dirPath) {
118+
File filesList[] = dirPath.listFiles();
119+
for (File file : filesList) {
120+
if (file.isFile()) {
121+
log.info("Attachments deleted : " + file.getPath());
122+
file.delete();
123+
}
124+
}
125+
}
91126
}

0 commit comments

Comments
 (0)