1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package info.magnolia.module.mail.templates.impl;
35
36 import info.magnolia.freemarker.FreemarkerHelper;
37 import info.magnolia.module.mail.MailTemplate;
38 import info.magnolia.module.mail.templates.MgnlMultipartEmail;
39
40 import javax.mail.MessagingException;
41
42 import java.io.Reader;
43 import java.io.StringReader;
44 import java.io.StringWriter;
45
46
47
48
49
50
51 public class FreemarkerEmail extends MgnlMultipartEmail {
52
53 public FreemarkerEmail(MailTemplate template) {
54 super(template);
55 }
56
57 @Override
58 public void setFrom(String from) {
59 try {
60 from = proccesFreemarkerString(from);
61 } catch (Exception e) {
62 log.error("Couldn't set from: " + from);
63 }
64 super.setFrom(from);
65 }
66
67 @Override
68 public void setSubject(String subject) throws MessagingException {
69 try {
70 subject = proccesFreemarkerString(subject);
71 super.setSubject(subject);
72 } catch (Exception e) {
73 throw new MessagingException();
74 }
75
76 }
77
78 @Override
79 public void setToList(String list) throws Exception {
80 list = proccesFreemarkerString(list);
81 super.setToList(list);
82 }
83
84 @Override
85 public void setBody(String body) throws Exception {
86 body = proccesFreemarkerString(body);
87 super.setBody(body);
88 }
89
90
91 @Override
92 public void setBodyFromResourceFile() throws Exception {
93 final StringWriter writer = new StringWriter();
94 FreemarkerHelper.getInstance().render(super.getTemplate().getTemplateFile(), super.getTemplate().getParameters(), writer);
95 super.setBody(writer.toString());
96 }
97
98 protected String proccesFreemarkerString(String text) throws Exception {
99
100 Reader reader = new StringReader(text);
101 final StringWriter writer = new StringWriter();
102 FreemarkerHelper.getInstance().render(reader, super.getTemplate().getParameters(), writer);
103 reader.close();
104 return writer.toString();
105 }
106
107
108 }