Subversion Repositories SmartDukaan

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
35641 aman 1
//@Value("${prod}")
2
package com.spice.profitmandi.common.services;
3
 
4
import org.apache.logging.log4j.LogManager;
5
import org.apache.logging.log4j.Logger;
6
import org.springframework.beans.factory.annotation.Value;
7
import org.springframework.core.io.InputStreamSource;
8
import org.springframework.mail.javamail.JavaMailSender;
9
import org.springframework.mail.javamail.MimeMessageHelper;
10
import org.springframework.stereotype.Service;
11
 
12
import javax.mail.Multipart;
13
import javax.mail.internet.InternetAddress;
14
import javax.mail.internet.MimeBodyPart;
15
import javax.mail.internet.MimeMessage;
16
import javax.mail.internet.MimeMultipart;
17
import java.io.File;
18
import java.io.Serializable;
19
import java.util.Arrays;
20
import java.util.List;
21
import java.util.Map;
22
 
23
@Service
24
public class EmailServiceImpl implements EmailService {
25
 
26
    private static final Logger logger =
27
            LogManager.getLogger(EmailServiceImpl.class);
28
 
29
    @Value("${prod}")
30
    private boolean isProd;
31
 
32
    private final JavaMailSender mailSender;
33
 
34
    public EmailServiceImpl(JavaMailSender mailSender) {
35
        this.mailSender = mailSender;
36
    }
37
 
38
 
39
    @Override
40
    public void sendMailWithAttachments(
41
            JavaMailSender mailSender,
42
            String[] emailTo,
43
            String[] cc,
44
            String subject,
45
            String body
46
    ) throws Exception {
47
 
48
        MimeMessage message = mailSender.createMimeMessage();
49
        MimeMessageHelper helper = new MimeMessageHelper(message, true);
50
 
51
        helper.setTo(emailTo);
52
        helper.setSubject(subject);
53
        helper.setText(body, true);
54
 
55
        if (cc != null) {
56
            helper.setCc(cc);
57
        }
58
 
59
        helper.setFrom(new InternetAddress(
60
                "noreply@smartdukaan.com",
61
                "SmartDukaan Care"
62
        ));
63
 
64
        sendIfProd(message, emailTo, subject);
65
    }
66
 
67
    @Override
68
    public void sendMailWithAttachments(
69
            JavaMailSender mailSender,
70
            String[] emailTo,
71
            String[] cc,
72
            String subject,
73
            String body,
74
            List<File> attachments
75
    ) throws Exception {
76
 
77
        MimeMessage message = mailSender.createMimeMessage();
78
        MimeMessageHelper helper = new MimeMessageHelper(message, true);
79
 
80
        helper.setTo(emailTo);
81
        helper.setSubject(subject);
82
        helper.setText(body, true);
83
 
84
        if (cc != null) {
85
            helper.setCc(cc);
86
        }
87
 
88
        helper.setFrom(new InternetAddress(
89
                "noreply@smartdukaan.com",
90
                "SmartDukaan Care"
91
        ));
92
 
93
        if (attachments != null) {
94
            for (File file : attachments) {
95
                helper.addAttachment(file.getName(), file);
96
            }
97
        }
98
 
99
        sendIfProd(message, emailTo, subject);
100
    }
101
 
102
    @Override
103
    public void sendMailWithAttachments(
104
            JavaMailSender mailSender,
105
            String emailTo,
106
            String[] cc,
107
            String subject,
108
            String body,
109
            List<File> attachments
110
    ) throws Exception {
111
        // Delegate to array version for Utils.java compatibility
112
        sendMailWithAttachments(
113
                mailSender,
114
                new String[]{emailTo},
115
                cc,
116
                subject,
117
                body,
118
                attachments
119
        );
120
    }
121
 
122
    @Override
123
    public void sendMailWithAttachment(
124
            JavaMailSender mailSender,
125
            String[] emailTo,
126
            String[] cc,
127
            String subject,
128
            String body,
129
            String fileName,
130
            InputStreamSource inputStreamSource
131
    ) throws Exception {
132
 
133
        MimeMessage message = mailSender.createMimeMessage();
134
        MimeMessageHelper helper = new MimeMessageHelper(message, true);
135
 
136
        helper.setTo(emailTo);
137
        helper.setSubject(subject);
138
        helper.setText(body, true);
139
 
140
        if (cc != null) {
141
            helper.setCc(cc);
142
        }
143
 
144
        helper.addAttachment(fileName, inputStreamSource);
145
 
146
        helper.setFrom(new InternetAddress(
147
                "noreply@smartdukaan.com",
148
                "SmartDukaan Care"
149
        ));
150
 
151
        sendIfProd(message, emailTo, subject);
152
    }
153
 
154
    @Override
155
    public void sendMailWithAttachments(
156
            JavaMailSender mailSender,
157
            String[] emailTo,
158
            String[] cc,
159
            String[] bcc,
160
            String subject,
161
            String body,
162
            boolean html,
163
            Attachment... attachments
164
    ) throws Exception {
165
 
166
        MimeMessage message = mailSender.createMimeMessage();
167
        MimeMessageHelper helper = new MimeMessageHelper(message, true);
168
 
169
        helper.setTo(emailTo);
170
        helper.setSubject(subject);
171
        helper.setText(body, html);
172
 
173
        if (cc != null) helper.setCc(cc);
174
        if (bcc != null) helper.setBcc(bcc);
175
 
176
        helper.setFrom(new InternetAddress(
177
                "noreply@smartdukaan.com",
178
                "SmartDukaan Care"
179
        ));
180
 
181
        if (attachments != null) {
182
            for (Attachment attachment : attachments) {
183
                if (attachment != null) {
184
                    helper.addAttachment(
185
                            attachment.getFileName(),
186
                            attachment.getInputStreamSource()
187
                    );
188
                }
189
            }
190
        }
191
 
192
        sendIfProd(message, emailTo, subject);
193
    }
194
 
195
 
196
    @Override
197
    public void sendHtmlMailWithAttachments(
198
            JavaMailSender mailSender,
199
            String[] emailTo,
200
            String[] cc,
201
            String subject,
202
            String body,
203
            Attachment... attachments
204
    ) throws Exception {
205
 
206
        sendMailWithAttachments(
207
                mailSender,
208
                emailTo,
209
                cc,
210
                null,
211
                subject,
212
                body,
213
                true,
214
                attachments
215
        );
216
    }
217
 
218
 
219
    @Override
220
    public void sendEmbeddedHtmlMail(
221
            JavaMailSender mailSender,
222
            String[] emailTo,
223
            String[] cc,
224
            String subject,
225
            String body,
226
            Map<? extends Serializable, File> inlineImages
227
    ) throws Exception {
228
 
229
        MimeMessage message = mailSender.createMimeMessage();
230
        Multipart multipart = new MimeMultipart();
231
 
232
        MimeBodyPart bodyPart = new MimeBodyPart();
233
        bodyPart.setContent(body, "text/html");
234
        multipart.addBodyPart(bodyPart);
235
 
236
        if (inlineImages != null) {
237
            for (Map.Entry<? extends Serializable, File> entry : inlineImages.entrySet()) {
238
                MimeBodyPart imagePart = new MimeBodyPart();
239
                imagePart.setHeader("Content-ID", entry.getKey().toString());
240
                imagePart.setDisposition(MimeBodyPart.INLINE);
241
                imagePart.attachFile(entry.getValue());
242
                multipart.addBodyPart(imagePart);
243
            }
244
        }
245
 
246
        message.setContent(multipart);
247
        message.setSubject(subject);
248
        message.setRecipients(
249
                MimeMessage.RecipientType.TO,
250
                InternetAddress.parse(String.join(",", emailTo))
251
        );
252
 
253
        if (cc != null) {
254
            message.addRecipients(
255
                    MimeMessage.RecipientType.CC,
256
                    InternetAddress.parse(String.join(",", cc))
257
            );
258
        }
259
 
260
        message.setFrom(new InternetAddress(
261
                "noreply@smartdukaan.com",
262
                "SmartDukaan Care"
263
        ));
264
 
265
        sendIfProd(message, emailTo, subject);
266
    }
267
 
268
 
269
    private void sendIfProd(
270
            MimeMessage message,
271
            String[] emailTo,
272
            String subject
273
    ) {
274
        if (isProd) {
275
            mailSender.send(message);
276
        } else {
277
            logger.info(
278
                    "[MAIL BLOCKED - NON PROD] to={}, subject={}",
279
                    Arrays.toString(emailTo),
280
                    subject
281
            );
282
        }
283
    }
284
}