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
35
36
37
38
39
40
41
42
43
44
45 package org.melati.test;
46
47 import java.io.File;
48 import java.io.FileOutputStream;
49 import java.io.PrintWriter;
50
51 import javax.servlet.ServletConfig;
52 import javax.servlet.ServletException;
53
54 import org.melati.Melati;
55 import org.melati.PoemContext;
56 import org.melati.servlet.FormDataAdaptorFactory;
57 import org.melati.servlet.MultipartFormField;
58 import org.melati.servlet.PathInfoException;
59 import org.melati.servlet.TemplateServlet;
60 import org.melati.servlet.TemporaryFileFormDataAdaptorFactory;
61 import org.melati.template.MultipartTemplateContext;
62 import org.melati.template.ServletTemplateContext;
63 import org.melati.template.TemplateContext;
64 import org.melati.util.Email;
65 import org.melati.util.MelatiStringWriter;
66
67
68
69
70 public class EmailTemplateServletTest extends TemplateServlet {
71 private static final long serialVersionUID = 1L;
72
73 public void init(ServletConfig config) throws ServletException {
74 super.init(config);
75 FormDataAdaptorFactory fdaFactory = new TemporaryFileFormDataAdaptorFactory();
76
77 melatiConfig.setFormDataAdaptorFactory(fdaFactory);
78 }
79
80 protected String doTemplateRequest(Melati melati,
81 ServletTemplateContext context) throws Exception {
82
83 context.put("servlet", this);
84 melati.setResponseContentType("text/html");
85
86 if (context instanceof MultipartTemplateContext) {
87 String smtpServer = context.getFormField("SMTPServer");
88
89 String from = context.getFormField("from");
90 String to = context.getFormField("to");
91 to += ", timp@paneris.org";
92 String replyTo = context.getFormField("replyTo");
93 String subject = context.getFormField("subject");
94 String message = context.getFormField("message");
95 MultipartFormField referencedField = context.getMultipartFormField("referencedFile");
96 File referencedFile = referencedField.getDataFile();
97 MultipartFormField attachedField = context.getMultipartFormField("attachedFile");
98 File attachedFile = attachedField.getDataFile();
99 try {
100 Email.send(smtpServer,
101 from,
102 to,
103 replyTo,
104 subject,
105 message);
106 TemplateContext templateContext = melati.getTemplateContext();
107 templateContext.put("servlet",this);
108 templateContext.put("from",from);
109 templateContext.put("to",to);
110 templateContext.put("replyTo",replyTo);
111 templateContext.put("subject",subject);
112 templateContext.put("message",message);
113 String templateName = "org/melati/test/Email.wm";
114 MelatiStringWriter sw =
115 templateEngine.getStringWriter();
116 templateEngine.expandTemplate(sw,
117 templateName,
118 templateContext);
119 String htmlString = sw.toString();
120 File f = new File("tmp.html");
121 FileOutputStream fos = new FileOutputStream(f);
122 PrintWriter pw = new PrintWriter(fos);
123 pw.print(htmlString);
124 pw.close();
125 fos.close();
126
127
128 File[] both = {f, referencedFile, attachedFile};
129 Email.sendWithAttachments(smtpServer, from,
130 to, replyTo,
131 subject + ".sendWithAttachments",
132 message, both);
133
134 File[] referenced = {referencedFile};
135 File[] attached = {f, attachedFile};
136 Email.sendAsHtmlWithAttachments(smtpServer, from,
137 to, replyTo,
138 subject + ".sendAsHtmlWithAttachments",
139 message, htmlString, referenced, attached);
140 } catch (Exception e) {
141 e.printStackTrace(System.err);
142 context.put("error",
143 "Unexpected error: " + e);
144 }
145 context.put("done", Boolean.TRUE);
146 }
147
148 return "org/melati/test/EmailTemplateServletTest";
149 }
150
151
152
153
154
155
156
157
158 protected PoemContext poemContext(Melati melati) throws PathInfoException {
159 PoemContext pc = super.poemContext(melati);
160 if (pc.getLogicalDatabase().equals(""))
161 pc = poemContextWithLDB(melati, "melatitest");
162 return pc;
163 }
164 }