1818import java .nio .file .Files ;
1919import java .nio .file .Path ;
2020import 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