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