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 java.io.Reader;
41 import java.io.StringReader;
42 import java.io.StringWriter;
43
44 import javax.mail.MessagingException;
45
46
47
48
49 public class FreemarkerEmail extends MgnlMultipartEmail {
50
51 public FreemarkerEmail(MailTemplate template) {
52 super(template);
53 }
54
55 @Override
56 public void setFrom(String from) {
57 try {
58 from = processFreemarkerString(from);
59 } catch (Exception e) {
60 log.error("Couldn't set from: " + from);
61 }
62 super.setFrom(from);
63 }
64
65 @Override
66 public void setSubject(String subject) throws MessagingException {
67 try {
68 subject = processFreemarkerString(subject);
69 super.setSubject(subject);
70 } catch (Exception e) {
71 throw new MessagingException();
72 }
73
74 }
75
76 @Override
77 public void setToList(String list) throws Exception {
78 list = processFreemarkerString(list);
79 super.setToList(list);
80 }
81
82 @Override
83 public void setBody(String body) throws Exception {
84 body = processFreemarkerString(body);
85 super.setBody(body);
86 }
87
88 @Override
89 public void setBodyFromResourceFile() throws Exception {
90 final StringWriter writer = new StringWriter();
91 FreemarkerHelper.getInstance().render(super.getTemplate().getTemplateFile(), super.getTemplate().getParameters(), writer);
92 super.setBody(writer.toString());
93 }
94
95
96
97
98 protected String proccesFreemarkerString(String text) throws Exception {
99 return processFreemarkerString(text);
100 }
101
102 protected String processFreemarkerString(String text) throws Exception {
103 Reader reader = new StringReader(text);
104 final StringWriter writer = new StringWriter();
105 FreemarkerHelper.getInstance().render(reader, super.getTemplate().getParameters(), writer);
106 reader.close();
107 return writer.toString();
108 }
109
110 }